package org.asciidoctor.jruby.internal;

import org.jruby.RubyInstanceConfig;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

class EnvironmentInjector {

    private RubyInstanceConfig config;

    EnvironmentInjector(RubyInstanceConfig config) {
        this.config = config;
    }

    void inject(Map<String, String> environmentVars) {
        if (!environmentVars.isEmpty()) {
            Map<String, String> replacementEnv = new HashMap<String, String>(System.getenv());
            for (Map.Entry<String, String> envVar : environmentVars.entrySet()) {
                String key = envVar.getKey();
                String val = envVar.getValue();
                if (val == null || "".equals(val)) {
                    replacementEnv.remove(envVar.getKey());
                    if ("GEM_PATH".equals(key) && !environmentVars.containsKey("GEM_HOME")) {
                        replacementEnv.remove("GEM_HOME");
                    }
                } else {
                    replacementEnv.put(key, val);
                    if ("GEM_PATH".equals(key) && !environmentVars.containsKey("GEM_HOME")) {
                        String gemHome = val.toString().split(File.pathSeparator)[0];
                        replacementEnv.put("GEM_HOME", gemHome);
                    }

                }

            }

            config.setEnvironment(replacementEnv);
        }
    }
}