diff --git a/cli/src/main/java/com/devonfw/tools/ide/cli/CliArguments.java b/cli/src/main/java/com/devonfw/tools/ide/cli/CliArguments.java index 7fafd9aba..9b7135f04 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/cli/CliArguments.java +++ b/cli/src/main/java/com/devonfw/tools/ide/cli/CliArguments.java @@ -13,6 +13,8 @@ public class CliArguments implements Iterator { private boolean endOptions; + private boolean splitShortOpts; + /** * The constructor. * @@ -30,23 +32,38 @@ public CliArguments(String... args) { */ public CliArguments(CliArgument arg) { - this(arg, false); + this(arg, false, true); } - CliArguments(CliArgument arg, boolean endOpts) { + CliArguments(CliArgument arg, boolean endOpts, boolean splitShortOpts) { super(); this.initialArgument = arg; this.endOptions = endOpts; + this.splitShortOpts = splitShortOpts; setCurrent(arg); } /** * Marks the end of the options so no further {@link CliArgument#getNext(boolean) option splitting} will be performed. + * + * @see #stopSplitShortOptions() */ public void endOptions() { this.endOptions = true; + this.splitShortOpts = false; + } + + /** + * Stops splitting of short options. + * + * @see CliArgument#getNext(boolean) + * @see #endOptions() + */ + public void stopSplitShortOptions() { + + this.splitShortOpts = false; } /** @@ -106,7 +123,7 @@ public boolean hasNext() { public CliArgument next() { if (!this.currentArg.isEnd()) { - setCurrent(this.currentArg.getNext(!this.endOptions)); + setCurrent(this.currentArg.getNext(this.splitShortOpts)); } return this.currentArg; } @@ -116,7 +133,7 @@ public CliArgument next() { */ public CliArguments copy() { - return new CliArguments(this.currentArg, this.endOptions); + return new CliArguments(this.currentArg, this.endOptions, this.splitShortOpts); } @Override diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/CreateCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/CreateCommandlet.java index cbfb23d97..4dc07641b 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/CreateCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/CreateCommandlet.java @@ -27,7 +27,7 @@ public CreateCommandlet(IdeContext context) { super(context); this.newProject = add(new StringProperty("", true, "project")); - this.skipRepositories = add(new FlagProperty("--skip-repositories", false, null)); + this.skipRepositories = add(new FlagProperty("--skip-repositories")); add(this.settingsRepo); } diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/EditionGetCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/EditionGetCommandlet.java index 2bf9adf06..4cf9c8600 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/EditionGetCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/EditionGetCommandlet.java @@ -32,8 +32,8 @@ public EditionGetCommandlet(IdeContext context) { super(context); addKeyword(getName()); this.tool = add(new ToolProperty("", true, "tool")); - this.configured = add(new FlagProperty("--configured", false, null)); - this.installed = add(new FlagProperty("--installed", false, null)); + this.configured = add(new FlagProperty("--configured")); + this.installed = add(new FlagProperty("--installed")); } @Override diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/EnvironmentCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/EnvironmentCommandlet.java index fb47a3786..056a8deb5 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/EnvironmentCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/EnvironmentCommandlet.java @@ -29,7 +29,7 @@ public EnvironmentCommandlet(IdeContext context) { super(context); addKeyword(getName()); - this.bash = add(new FlagProperty("--bash", false, null)); + this.bash = add(new FlagProperty("--bash")); } @Override diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/VersionGetCommandlet.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/VersionGetCommandlet.java index 3b45c4768..51d851511 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/VersionGetCommandlet.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/VersionGetCommandlet.java @@ -32,8 +32,8 @@ public VersionGetCommandlet(IdeContext context) { super(context); addKeyword(getName()); this.tool = add(new ToolProperty("", true, "tool")); - this.configured = add(new FlagProperty("--configured", false, null)); - this.installed = add(new FlagProperty("--installed", false, null)); + this.configured = add(new FlagProperty("--configured")); + this.installed = add(new FlagProperty("--installed")); } @Override diff --git a/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java b/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java index b324e33ff..7a679a8c0 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java +++ b/cli/src/main/java/com/devonfw/tools/ide/context/AbstractIdeContext.java @@ -961,7 +961,7 @@ public ValidationResult apply(CliArguments arguments, Commandlet cmd, Completion } } if ((property != null) && property.isValue() && property.isMultiValued()) { - arguments.endOptions(); + arguments.stopSplitShortOptions(); } } boolean matches = currentProperty.apply(arguments, this, cmd, collector); diff --git a/cli/src/main/java/com/devonfw/tools/ide/property/FlagProperty.java b/cli/src/main/java/com/devonfw/tools/ide/property/FlagProperty.java index 40be4433d..93092aefd 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/property/FlagProperty.java +++ b/cli/src/main/java/com/devonfw/tools/ide/property/FlagProperty.java @@ -5,6 +5,25 @@ */ public class FlagProperty extends BooleanProperty { + /** + * The constructor. + * + * @param name the {@link #getName() property name}. + */ + public FlagProperty(String name) { + this(name, false); + } + + /** + * The constructor. + * + * @param name the {@link #getName() property name}. + * @param required the {@link #isRequired() required flag}. + */ + public FlagProperty(String name, boolean required) { + this(name, required, null); + } + /** * The constructor. * diff --git a/cli/src/main/resources/nls/Help_de.properties b/cli/src/main/resources/nls/Help_de.properties index bfa1d2a55..efab2481a 100644 --- a/cli/src/main/resources/nls/Help_de.properties +++ b/cli/src/main/resources/nls/Help_de.properties @@ -115,8 +115,8 @@ opt.--force=Aktiviert den Force-Modus (Erzwingen). opt.--locale=Die Spracheinstellungen (z.B. 'en' für Englisch). opt.--offline=Aktiviert den Offline-Modus (Überspringt Aktualisierungen oder git pull, schlägt fehl bei Downloads or git clone). opt.--quiet=Deaktiviert Info Logging ( nur success, warning und error). -opt.--skip-repositories=überspringt die Einrichtung der Repositories. -opt.--skip-tools=überspringt die Installation/Aktualisierung der Tools. +opt.--skip-repositories=Überspringt die Einrichtung der Repositories. +opt.--skip-tools=Überspringt die Installation/Aktualisierung der Tools. opt.--trace=Aktiviert Trace-Ausgaben (detaillierte Fehleranalyse). opt.--version=Zeigt die IDE Version an und beendet das Programm. options=Optionen: