Skip to content

Commit

Permalink
Handle -env option to erjang.Main
Browse files Browse the repository at this point in the history
We did not handle the -env option, so Erjang
was not picking up the result of e.g. passing
-env ERL_LIBS some:path.
  • Loading branch information
krestenkrab committed Aug 15, 2013
1 parent e1a4c20 commit 84ed016
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/main/java/erjang/ErjangConfig.java
Expand Up @@ -18,6 +18,8 @@

package erjang;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand All @@ -34,6 +36,8 @@
public class ErjangConfig {
static final Logger log = Logger.getLogger("erjang.config");

static final Map<String,String> extra_env = new HashMap<String, String>();

static {
String configFileName = System.getProperty("erjang.configfile");
if (configFileName != null && configFileName.trim().length() > 0) {
Expand Down Expand Up @@ -80,4 +84,12 @@ public static String getString(String propname, String fallback) {
public static boolean hasString(String propname) {
return (System.getProperty(propname) != null);
}

public static void setenv(String env, String val) {
extra_env.put(env, val);
}

public static String getenv(String env) {
return extra_env.get(env);
}
}
3 changes: 3 additions & 0 deletions src/main/java/erjang/Main.java
Expand Up @@ -48,6 +48,9 @@ public static void main(String[] args) throws Exception {
if ("-root".equals(args[i]) && i < args.length) {
cmd_line_root = args[i+1];
i +=1;
} else if ("-env".equals(args[i]) && (i+1) < args.length) {
ErjangConfig.setenv(args[i+1], args[i+2]);
i += 2;
} else if ("+e".equals(args[i]) && i < args.length) {
erts_version = "erts-" + args[i+1];
i += 1;
Expand Down
10 changes: 9 additions & 1 deletion src/main/java/erjang/m/os/Native.java
Expand Up @@ -33,6 +33,7 @@
import erjang.ETuple2;
import erjang.ETuple3;
import erjang.ECons;
import erjang.ErjangConfig;
import erjang.NotImplemented;

/**
Expand Down Expand Up @@ -69,7 +70,14 @@ public static EObject getenv(EObject o) {
if (str == null)
throw ERT.badarg(o);

String value = System.getenv(str.stringValue());
String value;

value = ErjangConfig.getenv(str.stringValue());
if (value != null) {
return EString.fromString(value);
}

value = System.getenv(str.stringValue());

if (value == null) {
return ERT.FALSE;
Expand Down

0 comments on commit 84ed016

Please sign in to comment.