From 9638faf634f3ecfab55e4f899822e9532a7f22fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Dec 2025 22:59:38 +0000 Subject: [PATCH 1/4] Bump com.google.truth:truth from 0.42 to 1.4.5 Bumps [com.google.truth:truth](https://github.com/google/truth) from 0.42 to 1.4.5. - [Release notes](https://github.com/google/truth/releases) - [Commits](https://github.com/google/truth/commits/v1.4.5) --- updated-dependencies: - dependency-name: com.google.truth:truth dependency-version: 1.4.5 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3d80c9d..92910db 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ com.google.truth truth - 0.42 + 1.4.5 test From c1ae92119651ac87ba36cd967cb8af1b345fcd00 Mon Sep 17 00:00:00 2001 From: Jiaqi Guo Date: Tue, 30 Dec 2025 17:20:49 -0600 Subject: [PATCH 2/4] Try fixing it by adding guava --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 92910db..0b86078 100644 --- a/pom.xml +++ b/pom.xml @@ -54,6 +54,12 @@ 1.4.5 test + + com.google.guava + guava + 33.5.0-android + test + scm:git:git@github.com:cyclopsgroup/jcli.git From a4d2ea09694847563265ac8dfcd35a63b040b704 Mon Sep 17 00:00:00 2001 From: Jiaqi Guo Date: Tue, 30 Dec 2025 17:24:54 -0600 Subject: [PATCH 3/4] Use 1.4.4 instead --- pom.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 0b86078..b453d6e 100644 --- a/pom.xml +++ b/pom.xml @@ -51,13 +51,7 @@ com.google.truth truth - 1.4.5 - test - - - com.google.guava - guava - 33.5.0-android + 1.4.4 test From 278aa1a878324b13adfbc2d321effb613fbfc118 Mon Sep 17 00:00:00 2001 From: Jiaqi Guo Date: Sun, 15 Mar 2026 10:28:04 -0500 Subject: [PATCH 4/4] Use 0.8.0 java parent pom --- pom.xml | 17 +-------- .../cyclopsgroup/jcli/ArgumentProcessor.java | 4 ++- .../java/org/cyclopsgroup/jcli/GnuParser.java | 4 ++- .../cyclopsgroup/jcli/ValidationResult.java | 12 +++++-- .../jcli/annotation/Argument.java | 8 +++-- .../org/cyclopsgroup/jcli/annotation/Cli.java | 16 ++++++--- .../jcli/annotation/MultiValue.java | 16 ++++++--- .../cyclopsgroup/jcli/annotation/Option.java | 24 +++++++++---- .../jcli/example/UserControl.java | 36 ++++++++++++++----- .../jcli/impl/AnnotationArgument.java | 4 ++- .../cyclopsgroup/jcli/impl/AnnotationCli.java | 4 ++- .../cyclopsgroup/jcli/impl/OptionHelp.java | 16 ++++++--- .../jcli/jline/ArgumentsInspector.java | 24 +++++++++---- .../org/cyclopsgroup/jcli/spi/Argument.java | 8 +++-- .../java/org/cyclopsgroup/jcli/spi/Cli.java | 12 +++++-- .../cyclopsgroup/jcli/spi/CommandLine.java | 8 +++-- .../jcli/spi/CommandLineBuilder.java | 4 ++- .../org/cyclopsgroup/jcli/spi/Option.java | 32 ++++++++++++----- .../cyclopsgroup/jcli/spi/ParsingContext.java | 12 +++++-- .../jcli/WithMultiValueOption.java | 8 +++-- .../cyclopsgroup/jcli/WithSimpleArgument.java | 8 +++-- .../org/cyclopsgroup/jcli/WithoutCli.java | 8 +++-- 22 files changed, 202 insertions(+), 83 deletions(-) diff --git a/pom.xml b/pom.xml index b453d6e..3a88231 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.cyclopsgroup cyclopsgroup-java-parent - 0.7.3 + 0.8.0 jcli jcli @@ -60,19 +60,4 @@ scm:git:git@github.com:cyclopsgroup/jcli.git git@github.com:cyclopsgroup/jcli.git - - - cyclopsgroup.server - s3://${dist.bucketName}/projects/jcli - - - - - - org.apache.maven.plugins - maven-site-plugin - 3.7.1 - - - diff --git a/src/main/java/org/cyclopsgroup/jcli/ArgumentProcessor.java b/src/main/java/org/cyclopsgroup/jcli/ArgumentProcessor.java index f86d75e..f78c150 100644 --- a/src/main/java/org/cyclopsgroup/jcli/ArgumentProcessor.java +++ b/src/main/java/org/cyclopsgroup/jcli/ArgumentProcessor.java @@ -55,7 +55,9 @@ public static ArgumentProcessor newInstance(Class beanType) { return forType(beanType); } - /** @return Implementation of parsing context */ + /** + * @return Implementation of parsing context + */ public abstract ParsingContext createParsingContext(); /** diff --git a/src/main/java/org/cyclopsgroup/jcli/GnuParser.java b/src/main/java/org/cyclopsgroup/jcli/GnuParser.java index ee1c593..c28689a 100644 --- a/src/main/java/org/cyclopsgroup/jcli/GnuParser.java +++ b/src/main/java/org/cyclopsgroup/jcli/GnuParser.java @@ -7,7 +7,9 @@ import org.cyclopsgroup.jcli.spi.Option; import org.cyclopsgroup.jcli.spi.ParsingContext; -/** @author Jiaqi Guo */ +/** + * @author Jiaqi Guo + */ public class GnuParser implements CommandLineParser { @Override public CommandLine parse(List arguments, ParsingContext context) { diff --git a/src/main/java/org/cyclopsgroup/jcli/ValidationResult.java b/src/main/java/org/cyclopsgroup/jcli/ValidationResult.java index c46a9ab..01abc57 100644 --- a/src/main/java/org/cyclopsgroup/jcli/ValidationResult.java +++ b/src/main/java/org/cyclopsgroup/jcli/ValidationResult.java @@ -14,7 +14,9 @@ public static final class ArgumentMissing extends Violation {} public static final class OptionMissing extends Violation { private final String optionName; - /** @param optionName Name of missing option */ + /** + * @param optionName Name of missing option + */ public OptionMissing(String optionName) { this.optionName = Preconditions.checkNotNull(optionName, "Name of missing option can't be null."); @@ -34,7 +36,9 @@ public String getOptionName() { public static final class UnexpectedOption extends Violation { private final String optionName; - /** @param optionName Name of unexpected option */ + /** + * @param optionName Name of unexpected option + */ public UnexpectedOption(String optionName) { this.optionName = Preconditions.checkNotNull(optionName, "Name of missing option can't be null."); @@ -76,7 +80,9 @@ public List getViolations() { return Collections.unmodifiableList(violations); } - /** @return True if there is not violation */ + /** + * @return True if there is not violation + */ public boolean isValid() { return violations.isEmpty(); } diff --git a/src/main/java/org/cyclopsgroup/jcli/annotation/Argument.java b/src/main/java/org/cyclopsgroup/jcli/annotation/Argument.java index 7473847..dc67ebc 100644 --- a/src/main/java/org/cyclopsgroup/jcli/annotation/Argument.java +++ b/src/main/java/org/cyclopsgroup/jcli/annotation/Argument.java @@ -16,9 +16,13 @@ @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Argument { - /** @return String description of argument which will be displayed in usage */ + /** + * @return String description of argument which will be displayed in usage + */ String description() default ""; - /** @return Name of argument displayed in usage */ + /** + * @return Name of argument displayed in usage + */ String displayName() default "arg"; } diff --git a/src/main/java/org/cyclopsgroup/jcli/annotation/Cli.java b/src/main/java/org/cyclopsgroup/jcli/annotation/Cli.java index 0792f6e..59a8eb6 100644 --- a/src/main/java/org/cyclopsgroup/jcli/annotation/Cli.java +++ b/src/main/java/org/cyclopsgroup/jcli/annotation/Cli.java @@ -15,15 +15,23 @@ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Cli { - /** @return String description of command */ + /** + * @return String description of command + */ String description() default ""; - /** @return Name of command */ + /** + * @return Name of command + */ String name(); - /** @return Note displayed as footer */ + /** + * @return Note displayed as footer + */ String note() default ""; - /** @return True if unexpected option or argument is expected to cause error */ + /** + * @return True if unexpected option or argument is expected to cause error + */ boolean restrict() default true; } diff --git a/src/main/java/org/cyclopsgroup/jcli/annotation/MultiValue.java b/src/main/java/org/cyclopsgroup/jcli/annotation/MultiValue.java index 8a77fd2..58b0403 100644 --- a/src/main/java/org/cyclopsgroup/jcli/annotation/MultiValue.java +++ b/src/main/java/org/cyclopsgroup/jcli/annotation/MultiValue.java @@ -16,15 +16,23 @@ @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface MultiValue { - /** @return Type of list that contains values */ + /** + * @return Type of list that contains values + */ Class listType() default ArrayList.class; - /** @return Max number of values in list. By default it's -1 that means unlimited */ + /** + * @return Max number of values in list. By default it's -1 that means unlimited + */ int maxValues() default -1; - /** @return Minimal number of values in list. By default it's 0 */ + /** + * @return Minimal number of values in list. By default it's 0 + */ int minValues() default 0; - /** @return Type of value in list */ + /** + * @return Type of value in list + */ Class valueType() default String.class; } diff --git a/src/main/java/org/cyclopsgroup/jcli/annotation/Option.java b/src/main/java/org/cyclopsgroup/jcli/annotation/Option.java index 2223aa8..fc9f6b3 100644 --- a/src/main/java/org/cyclopsgroup/jcli/annotation/Option.java +++ b/src/main/java/org/cyclopsgroup/jcli/annotation/Option.java @@ -15,21 +15,33 @@ @Target({ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Option { - /** @return Default value of option */ + /** + * @return Default value of option + */ String defaultValue() default ""; - /** @return String description of option which is displayed in usage */ + /** + * @return String description of option which is displayed in usage + */ String description() default ""; - /** @return Display name of option */ + /** + * @return Display name of option + */ String displayName() default "value"; - /** @return Long option name specified with double dash */ + /** + * @return Long option name specified with double dash + */ String longName() default ""; - /** @return Short option name specified with single dash */ + /** + * @return Short option name specified with single dash + */ String name(); - /** @return True if option has to be specified explicitly */ + /** + * @return True if option has to be specified explicitly + */ boolean required() default false; } diff --git a/src/main/java/org/cyclopsgroup/jcli/example/UserControl.java b/src/main/java/org/cyclopsgroup/jcli/example/UserControl.java index 740d2df..42f7237 100644 --- a/src/main/java/org/cyclopsgroup/jcli/example/UserControl.java +++ b/src/main/java/org/cyclopsgroup/jcli/example/UserControl.java @@ -25,48 +25,64 @@ public class UserControl { private List userNames; - /** @return Enum field example */ + /** + * @return Enum field example + */ @Option(name = "a", longName = "action", description = "Action to perform") public final UserControlAction getAction() { return action; } - /** @return A date example that needs customized conversion rule */ + /** + * @return A date example that needs customized conversion rule + */ @DateField(format = "yyyyMMdd") @Option(name = "d", longName = "date", description = "Start date") public Date getCreationDate() { return creationDate; } - /** @return A meaningless integer value */ + /** + * @return A meaningless integer value + */ @Option(name = "l", longName = "level", description = "A meaningless integer value") public final int getIntValue() { return intValue; } - /** @return Multi value string field example */ + /** + * @return Multi value string field example + */ @MultiValue @Argument(description = "User account name") public final List getUserNames() { return userNames; } - /** @param action Enum example */ + /** + * @param action Enum example + */ public final void setAction(UserControlAction action) { this.action = action; } - /** @param creationDate A date example that needs customized conversion rule */ + /** + * @param creationDate A date example that needs customized conversion rule + */ public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } - /** @param intValue A meaningless integer value */ + /** + * @param intValue A meaningless integer value + */ public final void setIntValue(int intValue) { this.intValue = intValue; } - /** @param userNames Multi value string field example */ + /** + * @param userNames Multi value string field example + */ public final void setUserNames(List userNames) { this.userNames = userNames; } @@ -80,7 +96,9 @@ public String toString() { .toString(); } - /** @param args Command line arguments */ + /** + * @param args Command line arguments + */ public static void main(String[] args) { UserControl control = new UserControl(); ArgumentProcessor.forType(UserControl.class).process(args, control); diff --git a/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationArgument.java b/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationArgument.java index feeb628..ddc7f5e 100644 --- a/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationArgument.java +++ b/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationArgument.java @@ -5,7 +5,9 @@ class AnnotationArgument implements org.cyclopsgroup.jcli.spi.Argument { private Argument argument; - /** @param argument Argument annotation */ + /** + * @param argument Argument annotation + */ AnnotationArgument(Argument argument) { this.argument = argument; } diff --git a/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationCli.java b/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationCli.java index fe4014d..2d4aa13 100644 --- a/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationCli.java +++ b/src/main/java/org/cyclopsgroup/jcli/impl/AnnotationCli.java @@ -13,7 +13,9 @@ class AnnotationCli implements org.cyclopsgroup.jcli.spi.Cli { private final boolean undefined; - /** @param cli Annotation cli */ + /** + * @param cli Annotation cli + */ AnnotationCli(Cli cli) { this.cli = cli; this.undefined = cli == null; diff --git a/src/main/java/org/cyclopsgroup/jcli/impl/OptionHelp.java b/src/main/java/org/cyclopsgroup/jcli/impl/OptionHelp.java index 08b84d3..110c3bc 100644 --- a/src/main/java/org/cyclopsgroup/jcli/impl/OptionHelp.java +++ b/src/main/java/org/cyclopsgroup/jcli/impl/OptionHelp.java @@ -18,7 +18,9 @@ public class OptionHelp { this.option = option; } - /** @return Description of option */ + /** + * @return Description of option + */ @FixLengthField(start = 30, length = 220) public String getDescription() { String desc = option.getDescription(); @@ -28,19 +30,25 @@ public String getDescription() { return desc; } - /** @return Name of option value */ + /** + * @return Name of option value + */ @FixLengthField(start = 20, length = 9) public String getDisplayName() { return option.isFlag() ? null : "<" + option.getDisplayName() + ">"; } - /** @return Long name of option */ + /** + * @return Long name of option + */ @FixLengthField(start = 3, length = 16) public String getLongName() { return Strings.isNullOrEmpty(option.getLongName()) ? null : "--" + option.getLongName(); } - /** @return Short name of option */ + /** + * @return Short name of option + */ @FixLengthField(start = 0, length = 2) public String getName() { return "-" + option.getName(); diff --git a/src/main/java/org/cyclopsgroup/jcli/jline/ArgumentsInspector.java b/src/main/java/org/cyclopsgroup/jcli/jline/ArgumentsInspector.java index 005a968..4037591 100644 --- a/src/main/java/org/cyclopsgroup/jcli/jline/ArgumentsInspector.java +++ b/src/main/java/org/cyclopsgroup/jcli/jline/ArgumentsInspector.java @@ -22,13 +22,17 @@ class ArgumentsInspector { private ArgumentsInspectorState state = ArgumentsInspectorState.READY; - /** @param context Parsing context */ + /** + * @param context Parsing context + */ ArgumentsInspector(ParsingContext context) { this.context = context; remainingOptions = new HashSet