diff --git a/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimpleDefaultProviderDemo.java b/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimpleDefaultProviderDemo.java new file mode 100644 index 000000000..58b6d5e22 --- /dev/null +++ b/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimpleDefaultProviderDemo.java @@ -0,0 +1,55 @@ +package picocli.examples.defaultprovider; + +import picocli.CommandLine; +import picocli.CommandLine.Command; +import picocli.CommandLine.IDefaultValueProvider; +import picocli.CommandLine.Model.ArgSpec; +import picocli.CommandLine.Model.OptionSpec; +import picocli.CommandLine.Option; + +import java.io.File; +import java.io.FileReader; +import java.io.Reader; +import java.util.Properties; +import java.util.concurrent.TimeUnit; + +@Command(name = "demo", mixinStandardHelpOptions = true, version = CommandLine.VERSION, + description = "Demonstrates default provider", + defaultValueProvider = SimpleDefaultProvider.class) +public class SimpleDefaultProviderDemo implements Runnable { // ... + + @Option(names = "-x", description = "Print count. ${DEFAULT-VALUE} by default.") + int x; + + @Option(names = "-d") double d; + @Option(names = { "-u", "--timeUnit"}) TimeUnit unit; + + @Override + public void run() { + for (int i = 0; i < x; i++) { + System.out.printf("You selected %f, %s.%n", d, unit); + } + } + + public static void main(String[] args) { + new CommandLine(new SimplePropertyDefaultProviderDemo()).execute(args); + } +} + +class SimpleDefaultProvider implements IDefaultValueProvider { + + @Override + public String defaultValue(ArgSpec argSpec) throws Exception { + + if (argSpec.isOption()) { + OptionSpec option = (OptionSpec) argSpec; + if ("--timeUnit".equals(option.longestName())) { + return TimeUnit.SECONDS.name(); + } + if ("-x".equals(option.longestName())) { + return "3"; + } + } + return null; + } +} diff --git a/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimplePropertyDefaultProviderDemo.java b/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimplePropertyDefaultProviderDemo.java index 9ee87efc7..89f604146 100644 --- a/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimplePropertyDefaultProviderDemo.java +++ b/picocli-examples/src/main/java/picocli/examples/defaultprovider/SimplePropertyDefaultProviderDemo.java @@ -15,7 +15,7 @@ @Command(name = "demo", mixinStandardHelpOptions = true, version = "3.9.3", description = "Demonstrate parsing & type conversion", - defaultValueProvider = PropertyDefaultProvider.class) + defaultValueProvider = SimpleDefaultProvider.class) public class SimplePropertyDefaultProviderDemo implements Runnable { // ... @Option(names = "-x", description = "Print count. ${DEFAULT-VALUE} by default.")