Skip to content

Commit

Permalink
Added release notes, made defaultValue optional
Browse files Browse the repository at this point in the history
  • Loading branch information
codemonstur committed Jan 20, 2020
1 parent 3537854 commit 86de5ba
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 28 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,15 @@ The design philosophy is; make command line argument parsing simple so you can s
## Usage

Include it as a dependency.

```
<dependency>
<groupId>com.github.codemonstur</groupId>
<artifactId>jcli</artifactId>
<version>1.0.0</version>
</dependency>
```

Use the builder to parse a class you decorated with the proper annotations.

```
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<groupId>com.github.codemonstur</groupId>
<artifactId>jcli</artifactId>
<version>1.0.0</version>
<version>1.1.0</version>

<name>${project.groupId}:${project.artifactId}</name>
<description>A command line parser</description>
Expand Down
4 changes: 4 additions & 0 deletions src/docs/releases/release-1.1.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
1.1.0

Updated license
Made the defaultValue configuration optional. null will be set instead
23 changes: 13 additions & 10 deletions src/main/java/jcli/CliHelp.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {;

Expand All @@ -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 {
Expand All @@ -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";
Expand Down Expand Up @@ -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) {
Expand All @@ -133,4 +135,5 @@ private static String toName(final CliOption option) {
if (!option.longName().isEmpty()) builder.add("--"+option.longName());
return join(" ", builder);
}

}
5 changes: 2 additions & 3 deletions src/main/java/jcli/CliParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ private static Map<String, FieldAndOption> 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);
}
Expand Down Expand Up @@ -142,8 +142,7 @@ private static <T> T applyArgumentsToInstance(final String[] args, final Map<Str
if (isListType(fao.field)) continue;
if (fao.option.isMandatory()) throw new MissingArgument(fao.option);

// TODO this might be the better option
// if (fao.argument.defaultValue().equals(FAKE_NULL)) continue;
if (fao.option.defaultValue().equals(FAKE_NULL)) continue;

fao.field.set(instance, toFieldType(fao.field.getType(), fao.option.defaultValue()));
}
Expand Down
11 changes: 4 additions & 7 deletions src/main/java/jcli/Reflection.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package jcli;

import jcli.annotations.CliOption;
import jcli.annotations.CliUnderscoreIsDash;
import jcli.errors.InvalidArgumentValue;

Expand All @@ -17,8 +16,6 @@
import java.util.*;
import java.util.regex.Pattern;

import static jcli.annotations.Constants.FAKE_NULL;

public enum Reflection {;

public interface StringToType<T> {
Expand Down Expand Up @@ -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);
// }

}
14 changes: 7 additions & 7 deletions src/test/java/unittests/TestInvalidOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -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");
// }
}

0 comments on commit 86de5ba

Please sign in to comment.