DatashareCli { public DatashareCli parseArguments(String[] args) { OptionParser parser = new OptionParser(); AbstractOptionSpec<Void> helpOpt = DatashareCliOptions.help(parser); AbstractOptionSpec<Void> versionOpt = DatashareCliOptions.version(parser); DatashareCliOptions.settings(parser); DatashareCliOptions.pluginsDir(parser); DatashareCliOptions.pluginList(parser); DatashareCliOptions.pluginInstall(parser); DatashareCliOptions.pluginDelete(parser); DatashareCliOptions.extensionsDir(parser); DatashareCliOptions.extensionList(parser); DatashareCliOptions.extensionInstall(parser); DatashareCliOptions.extensionDelete(parser); DatashareCliOptions.tcpListenPort(parser); DatashareCliOptions.mode(parser); DatashareCliOptions.stages(parser); DatashareCliOptions.dataDir(parser); DatashareCliOptions.enableOcr(parser); DatashareCliOptions.nlpPipelines(parser); DatashareCliOptions.resume(parser); DatashareCliOptions.scrollSize(parser); DatashareCliOptions.scrollSlices(parser); DatashareCliOptions.redisPoolSize(parser); DatashareCliOptions.elasticsearchDataPath(parser); DatashareCliOptions.reportName(parser); DatashareCliOptions.parallelism(parser); DatashareCliOptions.fileParserParallelism(parser); DatashareCliOptions.nlpParallelism(parser); DatashareCliOptions.followSymlinks(parser); DatashareCliOptions.enableBrowserOpenLink(parser); DatashareCliOptions.batchSearchMaxTime(parser); DatashareCliOptions.batchSearchThrottle(parser); DatashareCliOptions.batchSearchQueueType(parser); DatashareCliOptions.clusterName(parser); DatashareCliOptions.defaultUser(parser); DatashareCliOptions.defaultProject(parser); DatashareCliOptions.esHost(parser); DatashareCliOptions.queueName(parser); DatashareCliOptions.cors(parser); DatashareCliOptions.queueType(parser); DatashareCliOptions.busType(parser); DatashareCliOptions.messageBusAddress(parser); DatashareCliOptions.redisAddress(parser); DatashareCliOptions.dataSourceUrl(parser); DatashareCliOptions.rootHost(parser); DatashareCliOptions.genApiKey(parser); DatashareCliOptions.delApiKey(parser); DatashareCliOptions.getApiKey(parser); DatashareCliOptions.sessionTtlSeconds(parser); DatashareCliOptions.protectedUriPrefix(parser); DatashareCliOptions.oauthSecret(parser); DatashareCliOptions.oauthClient(parser); DatashareCliOptions.oauthApiUrl(parser); DatashareCliOptions.oauthAuthorizeUrl(parser); DatashareCliOptions.oauthTokenUrl(parser); DatashareCliOptions.authFilter(parser); DatashareCliOptions.oauthCallbackPath(parser); try { OptionSet options = parser.parse(args); if (options.has(helpOpt)) { printHelp(parser); System.exit(0); } if (options.has(versionOpt)) { System.out.println(getVersion()); System.exit(0); } properties = asProperties(options, null); } catch (Exception e) { LOGGER.error("Failed to parse arguments.", e); printHelp(parser); System.exit(1); } return this; }  DatashareCli parseArguments(String[] args); String getVersion(); boolean isBatchDaemon(); boolean isWebServer(); public Properties properties; }
@Test public void test_override_opt_last_option_wins() { cli.parseArguments(new String[] {"--mode=SERVER", "--mode=LOCAL"}); assertThat(cli.properties).includes(entry("mode", "LOCAL")); }
@Test public void test_mode_opt() { cli.parseArguments(new String[] {""}); assertThat(cli.properties).includes(entry("mode", "LOCAL")); cli.parseArguments(new String[] {"--mode=SERVER"}); assertThat(cli.properties).includes(entry("mode", "SERVER")); }
@Test public void test_option_not_specified() { cli.parseArguments(new String[] {""}); assertThat(cli.properties).excludes(entry("oauthClientId", "false")); }
@Test public void test_option_list_plugins() { cli.parseArguments(new String[] {"--pluginList"}); assertThat(cli.properties).includes(entry("pluginList", "true")); cli.parseArguments(new String[] {"--pluginList=.*"}); assertThat(cli.properties).includes(entry("pluginList", ".*")); cli.parseArguments(new String[] {""}); assertThat(cli.properties).excludes(entry("pluginList", "unused")); }