Skip to content

Commit

Permalink
Enforce key=value format of the standard CLI arguments.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Nov 5, 2017
1 parent 595d851 commit d9b7ebc
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 16 deletions.
Expand Up @@ -125,7 +125,7 @@ public static EnvProperties properties() {
return env.properties();
}

public static Map<String, Object> argsAsMap() {
public static Map<String, String> argsAsMap() {
return env.argsAsMap();
}

Expand Down
Expand Up @@ -53,9 +53,9 @@ public class Environment extends RapidoidInitializer {

private final EnvProperties properties = new EnvProperties();

private final LazyInit<Map<String, Object>> argsAsMap = new LazyInit<>(new Callable<Map<String, Object>>() {
private final LazyInit<Map<String, String>> argsAsMap = new LazyInit<>(new Callable<Map<String, String>>() {
@Override
public Map<String, Object> call() throws Exception {
public Map<String, String> call() throws Exception {
U.notNull(args, "environment args");
return Msc.parseArgs(args);
}
Expand Down Expand Up @@ -226,7 +226,7 @@ public EnvProperties properties() {
return properties;
}

public Map<String, Object> argsAsMap() {
public Map<String, String> argsAsMap() {
RapidoidEnv.touch();
return argsAsMap.get();
}
Expand Down
15 changes: 5 additions & 10 deletions commons/rapidoid-commons/src/main/java/org/rapidoid/util/Msc.java
Expand Up @@ -1025,21 +1025,16 @@ public static boolean hasConsole() {
return System.console() != null;
}

public static Map<String, Object> parseArgs(List<String> args) {
Map<String, Object> arguments = U.map();
public static Map<String, String> parseArgs(List<String> args) {
Map<String, String> arguments = U.map();

for (String arg : U.safe(args)) {
if (!isSpecialArg(arg)) {

String[] parts = arg.split("=", 2);
String name = parts[0];
U.must(parts.length == 2, "The argument '%s' doesn't have a key=value format!", arg);

if (parts.length > 1) {
String value = parts[1];
arguments.put(name, value);
} else {
arguments.put(name, true);
}
arguments.put(parts[0], parts[1]);

} else {
processSpecialArg(arguments, arg);
Expand All @@ -1053,7 +1048,7 @@ public static boolean isSpecialArg(String arg) {
return arg.matches(SPECIAL_ARG_REGEX);
}

private static void processSpecialArg(Map<String, Object> arguments, String arg) {
private static void processSpecialArg(Map<String, String> arguments, String arg) {
Matcher m = Pattern.compile(SPECIAL_ARG_REGEX).matcher(arg);
U.must(m.matches(), "Invalid argument");

Expand Down
Expand Up @@ -51,8 +51,9 @@ public void testNoConfig() {

@Test
public void testArgs() {
Env.setArgs("mode=production", "foo=bar", "111");
eq(Env.args(), U.list("mode=production", "foo=bar", "111"));
Env.setArgs("mode=production", "foo=bar", "x=111");
eq(Env.args(), U.list("mode=production", "foo=bar", "x=111"));
eq(Env.argsAsMap(), U.map("mode", "production", "foo", "bar", "x", "111"));
}

@Test
Expand Down

0 comments on commit d9b7ebc

Please sign in to comment.