diff --git a/README.md b/README.md index f25029d..1c0f527 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,15 @@ The design philosophy is; make command line argument parsing simple so you can s ## Usage Include it as a dependency. + +``` + + com.github.codemonstur + jcli + 1.0.0 + +``` + Use the builder to parse a class you decorated with the proper annotations. ``` diff --git a/pom.xml b/pom.xml index c20e71e..17a112d 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.github.codemonstur jcli - 1.0.0 + 1.1.0 ${project.groupId}:${project.artifactId} A command line parser diff --git a/src/docs/releases/release-1.1.0.txt b/src/docs/releases/release-1.1.0.txt new file mode 100644 index 0000000..9da3f58 --- /dev/null +++ b/src/docs/releases/release-1.1.0.txt @@ -0,0 +1,4 @@ +1.1.0 + +Updated license +Made the defaultValue configuration optional. null will be set instead diff --git a/src/main/java/jcli/CliHelp.java b/src/main/java/jcli/CliHelp.java index 355e85b..6a55354 100644 --- a/src/main/java/jcli/CliHelp.java +++ b/src/main/java/jcli/CliHelp.java @@ -15,7 +15,6 @@ import static jcli.Reflection.*; import static jcli.Util.isNullOrEmpty; import static jcli.Util.padRight; -import static jcli.annotations.Constants.FAKE_NULL; public enum CliHelp {; @@ -26,8 +25,11 @@ public static void printHelp(final String name, final Class clazz) { System.out.println(getHelp(name, clazz)); } - public static String getHelp(final String builderName, final Class clazz) throws InvalidOptionConfiguration { - return getHelp(builderName, " ", clazz); + public static String getHelp(final Class clazz) throws InvalidOptionConfiguration { + return getHelp(null, clazz); + } + public static String getHelp(final String name, final Class clazz) throws InvalidOptionConfiguration { + return getHelp(name, " ", clazz); } public static String getHelp(final String builderName, final String indent, final Class clazz) throws InvalidOptionConfiguration { @@ -50,8 +52,8 @@ public static String getHelp(final String builderName, final String indent, fina throw new InvalidOptionType(option); if (option.name() == ' ' && option.longName().isEmpty()) throw new InvalidOptionName(field.getName()); - if (hasMissingDefault(option, field)) - throw new MissingDefaultForOption(option); +// if (hasMissingDefault(option, field)) +// throw new MissingDefaultForOption(option); final String optionName = toName(option); final String optionNeed = option.isMandatory() ? "mandatory" : "optional"; @@ -103,11 +105,11 @@ private static String processCliCommandAnnotation(final StringBuilder builder, f private static void printUsage(final StringBuilder builder, final String name, final Class clazz) { builder.append("Usage: ") - .append(name) - .append(" [options] ") - .append(join(" ", toPositionalNames(clazz))) - .append("\n\n") - .append("Options:\n"); + .append(name) + .append(" [options] ") + .append(join(" ", toPositionalNames(clazz))) + .append("\n\n") + .append("Options:\n"); } private static boolean hasExamples(String[] examples) { @@ -133,4 +135,5 @@ private static String toName(final CliOption option) { if (!option.longName().isEmpty()) builder.add("--"+option.longName()); return join(" ", builder); } + } diff --git a/src/main/java/jcli/CliParser.java b/src/main/java/jcli/CliParser.java index ec4afc4..9dd61f1 100644 --- a/src/main/java/jcli/CliParser.java +++ b/src/main/java/jcli/CliParser.java @@ -81,7 +81,7 @@ private static Map toFieldAndOptionMap(final Class clazz throw new HelpTypeNotBoolean(field); // TODO test if this is really desired, maybe better to just leave the field alone with whatever was defined in the class - if (hasMissingDefault(option, field)) throw new MissingDefaultForOption(option); + // if (hasMissingDefault(option, field)) throw new MissingDefaultForOption(option); addFieldAndOption(map, field, option); } @@ -142,8 +142,7 @@ private static T applyArgumentsToInstance(final String[] args, final Map { @@ -146,9 +143,9 @@ public static Class toParameterType(final Field field) { return (Class) ((ParameterizedType)field.getGenericType()).getActualTypeArguments()[0]; } - public static boolean hasMissingDefault(final CliOption option, final Field field) { - if (field.getType().equals(List.class)) return false; - return !option.isMandatory() && !isBooleanType(field) && !option.isHelp() && option.defaultValue().equals(FAKE_NULL); - } +// public static boolean hasMissingDefault(final CliOption option, final Field field) { +// if (field.getType().equals(List.class)) return false; +// return !option.isMandatory() && !isBooleanType(field) && !option.isHelp() && option.defaultValue().equals(FAKE_NULL); +// } } diff --git a/src/test/java/unittests/TestInvalidOptions.java b/src/test/java/unittests/TestInvalidOptions.java index ad753a9..770469f 100644 --- a/src/test/java/unittests/TestInvalidOptions.java +++ b/src/test/java/unittests/TestInvalidOptions.java @@ -54,11 +54,11 @@ public void optionWithoutName() throws InvalidCommandLine { fail("Parser failed to throw exception InvalidOptionName"); } - @Test(expected = MissingDefaultForOption.class) - public void optionMissingDefault() throws InvalidCommandLine { - final String[] args = {}; - parseCommandLineArguments(args, MissingDefault::new); - - fail("Parser failed to throw exception MissingDefaultForOption"); - } +// @Test(expected = MissingDefaultForOption.class) +// public void optionMissingDefault() throws InvalidCommandLine { +// final String[] args = {}; +// parseCommandLineArguments(args, MissingDefault::new); +// +// fail("Parser failed to throw exception MissingDefaultForOption"); +// } }