diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..8585983 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,19 @@ +image: gcc:latest +stages: + - build + +build-c: + stage: build + script: + - cd c; make + artifacts: + paths: + - c/libcmdlineoptions.* + - c/tests-* + +#test-c: + #stage: test + #script: + #- cd c; make test + #dependencies: + #- build-c diff --git a/c/tests.c b/c/tests.c index 5788072..ef4d542 100644 --- a/c/tests.c +++ b/c/tests.c @@ -23,7 +23,7 @@ void configureDefaultSet() { CmdLO_AddPossibleParameter("example", "test2"); } -#define ASSERT(x,y) if(!(x)) printf("ASSERT FAILED! '%s'.\n",y); else printf("ASSERT '%s' succeded.\n",y) +#define ASSERT(x,y) if(!(x)) printf("ASSERT FAILED! '%s'.\n",y); else printf("ASSERT '%s' succeeded.\n",y) int main(int argc, char** argv) { // configure the options @@ -182,4 +182,3 @@ int main(int argc, char** argv) { "something value count"); return 0; } - diff --git a/java/src/to/mmo/cmdlineoptions/CmdOptions.java b/java/src/to/mmo/cmdlineoptions/CmdOptions.java index 274046e..1700bd0 100644 --- a/java/src/to/mmo/cmdlineoptions/CmdOptions.java +++ b/java/src/to/mmo/cmdlineoptions/CmdOptions.java @@ -18,186 +18,17 @@ public class CmdOptions { private static CmdOptions instance; private static String optionChar; - private HashMap options; + private HashMap options; private boolean showOptions; private boolean combineSwitches; private boolean dontQuitOnError; - public static class Option { - private String name; - private ArrayList cmd; - private ArrayList cmdLong; - private String description; - private ArrayList defaultParameter; - - private ArrayList possibleParams; - private boolean set; - private boolean required; - private ArrayList values; - private int maxParameters, minParameters; - private ArrayList examples; - private int stepSizeParameters; - - public ArrayList getValues() { - return values; - } - - public ArrayList getDefaultParameter() { - return defaultParameter; - } - - public Option() { - values = new ArrayList(); - cmd = new ArrayList(); - cmdLong = new ArrayList(); - defaultParameter = new ArrayList(); - possibleParams = new ArrayList(); - examples = new ArrayList(); - } - - public Option addCommand(String cmd) { - if (cmd.contains(optionChar)) { - cmd = cmd.replace(optionChar, ""); - } - if (cmd.length() > 1) { - throw new IllegalArgumentException( - "Command longer than 1 character, which is not allowed. Use 'addLongCommand()' instead!"); - } - this.cmd.add(cmd); - return this; - } - - public Option addLongCommand(String cmd) { - if (cmd.contains(optionChar)) - cmd = cmd.replace(optionChar, ""); - this.cmdLong.add(cmd); - return this; - } - - public Option addDefaultParameter(String d) { - this.defaultParameter.add(d); - return this; - } - - public Option addPossibleParameter(String p) { - this.possibleParams.add(p); - return this; - } - - public Option addValue(String value) { - this.values.add(value); - return this; - } - - public String getName() { - return name; - } - - public Option setName(String name) { - this.name = name; - return this; - } - - public Option setParameterCount(int min, int max) { - return this.setParameterCount(min, max, 0); - } - - public Option setParameterCount(int min, int max, int step) { - this.minParameters = min; - this.maxParameters = max; - this.stepSizeParameters = step; - return this; - } - - public String getDescription() { - return description; - } - - public Option setDescription(String description) { - this.description = description; - return this; - } - - public Option setRequired(boolean required) { - this.required = true; - return this; - } - - public boolean isSet() { - return set; - } - - public boolean valuesContains(String value) { - return values.contains(value); - } - - public int getIndexOf(String value) { - return values.indexOf(value); - } - - public Option setSet(boolean set) { - this.set = set; - return this; - } - - public Option addExample(String example) { - this.examples.add(example); - return this; - } - - public String toString() { - return toString(false); - } - - public String toString(boolean help) { - String ret = name; - ret += " ("; - for (String s : cmd) { - ret += optionChar + s + ", "; - } - for (String s : cmdLong) { - ret += optionChar + optionChar + s + ", "; - } - ret += ")"; - if (help && defaultParameter.size() > 0) { - ret += ": default="; - for (String s : defaultParameter) { - ret += s + ","; - } - } - ret += (help && description != null ? "\n\t\t" + description : ""); - if (help && possibleParams.size() > 0) { - boolean start = true; - ret += "\n\t\t(Possible parameters: "; - for (String s : possibleParams) { - ret += (start ? "" : ", ") + s; - start = false; - } - ret += ")"; - } - if (set) { - ret += "\n\t\t--> current Setting: "; - if (values.size() > 0) { - boolean start = true; - for (String s : values) { - ret += (start ? "" : ",") + s; - start = false; - } - } else { - ret += "true"; - } - // ret += "\n"; - } - return ret; - } - } - private CmdOptions() { optionChar = "-"; this.setSwitchCombination(false); this.setShowOptions(false); this.setDontQuitOnError(false); - options = new HashMap(); + options = new HashMap(); this.createOption("help") .setDescription( "Show all possible options and their parameters.") @@ -215,6 +46,7 @@ public class CmdOptions { this.combineSwitches = on; } + @SuppressWarnings("static-access") public void setOptionCharacter(String c) { this.optionChar = c; } @@ -233,14 +65,13 @@ public class CmdOptions { } } - public Option createOption(String name) { - Option o = new Option(); - o.setName(name); + public CommandLineOption createOption(String name) { + CommandLineOption o = new CommandLineOption(name); this.options.put(name, o); return o; } - public Option getBareOption(String name) { + public CommandLineOption getBareOption(String name) { return options.get(name); } @@ -257,10 +88,11 @@ public class CmdOptions { } public String[] getOption(String name) { - if (options.get(name).values.size() > 0) - return options.get(name).values.toArray(new String[0]); - else if (options.get(name).defaultParameter != null) + if (options.get(name).getValues().size() > 0) return options.get(name).getValues().toArray(new String[0]); + else if (options.get(name).getDefaultParameter().size() > 0) + return options.get(name).getDefaultParameter() + .toArray(new String[0]); return null; } @@ -272,9 +104,9 @@ public class CmdOptions { } public Integer[] getOptionAsInt(String name) { - if (options.get(name).values.size() > 0) { + if (options.get(name).getValues().size() > 0) { ArrayList list = new ArrayList(); - for (String o : options.get(name).values) { + for (String o : options.get(name).getValues()) { list.add(Integer.parseInt(o)); } return list.toArray(new Integer[0]); @@ -297,9 +129,9 @@ public class CmdOptions { } public Double[] getOptionAsDouble(String name) { - if (options.get(name).values.size() > 0) { + if (options.get(name).getValues().size() > 0) { ArrayList list = new ArrayList(); - for (String o : options.get(name).values) { + for (String o : options.get(name).getValues()) { list.add(Double.parseDouble(o)); } return list.toArray(new Double[0]); @@ -322,7 +154,7 @@ public class CmdOptions { } public boolean isSet(String option) { - return options.get(option).set; + return options.get(option).isSet(); } public boolean isSet(String option, String parameter) { @@ -330,8 +162,8 @@ public class CmdOptions { } public void resetValues() { - for (Option o : options.values()) { - o.values.clear(); + for (CommandLineOption o : options.values()) { + o.getValues().clear(); } } @@ -345,14 +177,15 @@ public class CmdOptions { b.append("Possible options:\n"); } b.append("-options\n"); - Option[] vars = options.values().toArray(new Option[0]); - Arrays.sort(vars, new Comparator