Skip to content

Commit

Permalink
[Core] Refactor CommandLine arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
ltpquang committed Sep 25, 2020
1 parent 2c6652d commit 96349fd
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 31 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package io.cucumber.core.options;

public class CommandlineOptions {
public static final String HELP = "--help";
public static final String HELP_SHORT = "-h";

public static final String VERSION = "--version";
public static final String VERSION_SHORT = "-v";

public static final String I18N = "--i18n";

public static final String THREADS = "--threads";

public static final String GLUE = "--glue";
public static final String GLUE_SHORT = "-g";

public static final String TAGS = "--tags";
public static final String TAGS_SHORT = "-t";

public static final String PUBLISH = "--publish";

public static final String PLUGIN = "--plugin";
public static final String PLUGIN_SHORT = "-p";

public static final String NO_DRY_RUN = "--no-dry-run";

public static final String DRY_RUN = "--dry-run";
public static final String DRY_RUN_SHORT = "-d";

public static final String NO_STRICT = "--no-strict";

public static final String STRICT = "--strict";
public static final String STRICT_SHORT = "-s";

public static final String NO_MONOCHROME = "--no-monochrome";

public static final String MONOCHROME = "--monochrome";
public static final String MONOCHROME_SHORT = "-m";

public static final String SNIPPETS = "--snippets";

public static final String NAME = "--name";
public static final String NAME_SHORT = "-n";

public static final String WIP = "--wip";
public static final String WIP_SHORT = "-w";

public static final String ORDER = "--order";

public static final String COUNT = "--count";

public static final String OBJECT_FACTORY = "--object-factory";
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
package io.cucumber.core.options;

import io.cucumber.core.exception.CucumberException;
import io.cucumber.core.feature.FeatureWithLines;
import io.cucumber.core.feature.GluePath;
import io.cucumber.core.logging.Logger;
import io.cucumber.core.logging.LoggerFactory;
import io.cucumber.datatable.DataTable;
import io.cucumber.gherkin.GherkinDialect;
import io.cucumber.gherkin.GherkinDialectProvider;
import io.cucumber.gherkin.IGherkinDialectProvider;
import io.cucumber.tagexpressions.TagExpressionParser;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
Expand All @@ -28,6 +17,17 @@
import java.util.regex.Pattern;
import java.util.stream.Collectors;

import io.cucumber.core.exception.CucumberException;
import io.cucumber.core.feature.FeatureWithLines;
import io.cucumber.core.feature.GluePath;
import io.cucumber.core.logging.Logger;
import io.cucumber.core.logging.LoggerFactory;
import io.cucumber.datatable.DataTable;
import io.cucumber.gherkin.GherkinDialect;
import io.cucumber.gherkin.GherkinDialectProvider;
import io.cucumber.gherkin.IGherkinDialectProvider;
import io.cucumber.tagexpressions.TagExpressionParser;

import static io.cucumber.core.options.ObjectFactoryParser.parseObjectFactory;
import static io.cucumber.core.options.OptionsFileParser.parseFeatureWithLinesFile;
import static java.nio.charset.StandardCharsets.UTF_8;
Expand Down Expand Up @@ -65,66 +65,70 @@ private RuntimeOptionsBuilder parse(List<String> args) {
while (!args.isEmpty()) {
String arg = args.remove(0).trim();

if (arg.equals("--help") || arg.equals("-h")) {
if (arg.equals(CommandlineOptions.HELP) || arg.equals(CommandlineOptions.HELP_SHORT)) {
printUsage();
exitCode = 0;
return parsedOptions;
} else if (arg.equals("--version") || arg.equals("-v")) {
} else if (arg.equals(CommandlineOptions.VERSION) || arg.equals(CommandlineOptions.VERSION_SHORT)) {
out.println(VERSION);
exitCode = 0;
return parsedOptions;
} else if (arg.equals("--i18n")) {
} else if (arg.equals(CommandlineOptions.I18N)) {
String nextArg = removeArgFor(arg, args);
exitCode = printI18n(nextArg);
return parsedOptions;
} else if (arg.equals("--threads")) {
} else if (arg.equals(CommandlineOptions.THREADS)) {
int threads = Integer.parseInt(removeArgFor(arg, args));
if (threads < 1) {
out.println("--threads must be > 0");
exitCode = 1;
return parsedOptions;
}
parsedOptions.setThreads(threads);
} else if (arg.equals("--glue") || arg.equals("-g")) {
} else if (arg.equals(CommandlineOptions.GLUE) || arg.equals(CommandlineOptions.GLUE_SHORT)) {
String gluePath = removeArgFor(arg, args);
URI parse = GluePath.parse(gluePath);
parsedOptions.addGlue(parse);
} else if (arg.equals("--tags") || arg.equals("-t")) {
} else if (arg.equals(CommandlineOptions.TAGS) || arg.equals(CommandlineOptions.TAGS_SHORT)) {
parsedOptions.addTagFilter(TagExpressionParser.parse(removeArgFor(arg, args)));
} else if (arg.equals("--publish")) {
} else if (arg.equals(CommandlineOptions.PUBLISH)) {
parsedOptions.setPublish(true);
} else if (arg.equals("--plugin") || arg.equals("-p")) {
} else if (arg.equals(CommandlineOptions.PLUGIN) || arg.equals(CommandlineOptions.PLUGIN_SHORT)) {
parsedOptions.addPluginName(removeArgFor(arg, args));
} else if (arg.equals("--no-dry-run") || arg.equals("--dry-run") || arg.equals("-d")) {
parsedOptions.setDryRun(!arg.startsWith("--no-"));
} else if (arg.equals("--no-strict")) {
} else if (arg.equals(CommandlineOptions.DRY_RUN) || arg.equals(CommandlineOptions.DRY_RUN_SHORT)) {
parsedOptions.setDryRun(true);
} else if (arg.equals(CommandlineOptions.NO_DRY_RUN)) {
parsedOptions.setDryRun(false);
} else if (arg.equals(CommandlineOptions.NO_STRICT)) {
out.println("--no-strict is no longer effective");
exitCode = 1;
return parsedOptions;
} else if (arg.equals("--strict") || arg.equals("-s")) {
} else if (arg.equals(CommandlineOptions.STRICT) || arg.equals(CommandlineOptions.STRICT_SHORT)) {
log.warn(() -> "--strict is enabled by default. This option will be removed in a future release.");
} else if (arg.equals("--no-monochrome") || arg.equals("--monochrome") || arg.equals("-m")) {
parsedOptions.setMonochrome(!arg.startsWith("--no-"));
} else if (arg.equals("--snippets")) {
} else if (arg.equals(CommandlineOptions.MONOCHROME) || arg.equals(CommandlineOptions.MONOCHROME_SHORT)) {
parsedOptions.setMonochrome(true);
} else if (arg.equals(CommandlineOptions.NO_MONOCHROME)) {
parsedOptions.setMonochrome(false);
} else if (arg.equals(CommandlineOptions.SNIPPETS)) {
String nextArg = removeArgFor(arg, args);
parsedOptions.setSnippetType(SnippetTypeParser.parseSnippetType(nextArg));
} else if (arg.equals("--name") || arg.equals("-n")) {
} else if (arg.equals(CommandlineOptions.NAME) || arg.equals(CommandlineOptions.NAME_SHORT)) {
String nextArg = removeArgFor(arg, args);
Pattern pattern = Pattern.compile(nextArg);
parsedOptions.addNameFilter(pattern);
} else if (arg.equals("--wip") || arg.equals("-w")) {
} else if (arg.equals(CommandlineOptions.WIP) || arg.equals(CommandlineOptions.WIP_SHORT)) {
parsedOptions.setWip(true);
} else if (arg.equals("--order")) {
} else if (arg.equals(CommandlineOptions.ORDER)) {
parsedOptions.setPickleOrder(PickleOrderParser.parse(removeArgFor(arg, args)));
} else if (arg.equals("--count")) {
} else if (arg.equals(CommandlineOptions.COUNT)) {
int count = Integer.parseInt(removeArgFor(arg, args));
if (count < 1) {
out.println("--count must be > 0");
exitCode = 1;
return parsedOptions;
}
parsedOptions.setCount(count);
} else if (arg.equals("--object-factory")) {
} else if (arg.equals(CommandlineOptions.OBJECT_FACTORY)) {
String objectFactoryClassName = removeArgFor(arg, args);
parsedOptions.setObjectFactoryClass(parseObjectFactory(objectFactoryClassName));
} else if (arg.startsWith("-")) {
Expand Down

0 comments on commit 96349fd

Please sign in to comment.