From d2529c057e0c082437af9cfb8b2d72839929bbfe Mon Sep 17 00:00:00 2001 From: Ruud Senden <8635138+rsenden@users.noreply.github.com> Date: Fri, 28 Jul 2023 10:12:23 +0200 Subject: [PATCH] chore: Remove unused options from container commands (closes #379) --- .../app/_main/cli/cmd/FCLIRootCommands.java | 4 +-- .../util/FortifyCLIDynamicInitializer.java | 8 +++--- .../java/com/fortify/cli/FortifyCLITest.java | 4 ++- .../cli/cmd/AbstractContainerCommand.java | 26 +++++++++++++++++++ ...mand.java => AbstractRunnableCommand.java} | 4 +-- .../cli/common/cli/mixin/ICommandAware.java | 4 +-- .../output/cli/cmd/AbstractOutputCommand.java | 4 +-- .../rest/cli/cmd/AbstractWaitForCommand.java | 4 +-- .../config/_main/cli/cmd/ConfigCommands.java | 4 +-- .../language/cli/cmd/LanguageCommands.java | 4 +-- .../config/proxy/cli/cmd/ProxyCommands.java | 4 +-- .../cli/cmd/TrustStoreCommands.java | 4 +-- .../session/cli/cmd/FoDSessionCommands.java | 4 +-- .../cli/fod/_main/cli/cmd/FoDCommands.java | 4 +-- .../cli/fod/app/cli/cmd/FoDAppCommands.java | 4 +-- .../cli/cmd/FoDAppMicroserviceCommands.java | 4 +-- .../release/cli/cmd/FoDAppRelCommands.java | 4 +-- .../cli/fod/rest/cli/cmd/FoDRestCommands.java | 6 ++--- .../cli/fod/scan/cli/cmd/FoDScanCommands.java | 4 +-- .../cli/fod/user/cli/cmd/FoDUserCommands.java | 4 +-- .../cli/cmd/FoDUserGroupCommands.java | 4 +-- .../_main/cli/cmd/LicenseCommands.java | 4 +-- .../msp_report/cli/cmd/MspReportCommands.java | 4 +-- .../ncd_report/cli/cmd/NcdReportCommands.java | 4 +-- .../NcdReportAuthorDeduplicatorTest.java | 1 - .../cli/cmd/SCDastSessionCommands.java | 4 +-- .../sc_dast/_main/cli/cmd/SCDastCommands.java | 4 +-- .../rest/cli/cmd/SCDastRestCommands.java | 4 +-- .../scan/cli/cmd/SCDastScanCommands.java | 4 +-- .../cli/cmd/SCDastScanPolicyCommands.java | 4 +-- .../cli/cmd/SCDastScanSettingsCommands.java | 4 +-- .../sensor/cli/cmd/SCDastSensorCommands.java | 4 +-- .../cli/cmd/SCSastSessionCommands.java | 4 +-- .../sc_sast/_main/cli/cmd/SCSastCommands.java | 4 +-- .../cli/cmd/SCSastControllerRestCommands.java | 4 +-- .../scan/cli/cmd/SCSastScanCommands.java | 4 +-- .../session/cli/cmd/SSCSessionCommands.java | 4 +-- .../cli/ssc/_main/cli/cmd/SSCCommands.java | 4 +-- .../cli/cmd/SSCActivityFeedCommands.java | 4 +-- .../ssc/alert/cli/cmd/SSCAlertCommands.java | 4 +-- .../cli/cmd/SSCAlertDefinitionCommands.java | 4 +-- .../cli/ssc/app/cli/cmd/SSCAppCommands.java | 4 +-- .../cli/cmd/SSCAppVersionCommands.java | 4 +-- .../cmd/SSCAppVersionAttributeCommands.java | 4 +-- .../cmd/SSCAppVersionFilterSetCommands.java | 4 +-- .../cli/cmd/SSCAppVersionUserCommands.java | 4 +-- .../artifact/cli/cmd/SSCArtifactCommands.java | 4 +-- .../cmd/SSCAttributeDefinitionCommands.java | 4 +-- .../ssc/event/cli/cmd/SSCEventCommands.java | 4 +-- .../cli/cmd/SSCIssueTemplateCommands.java | 4 +-- .../cli/ssc/job/cli/cmd/SSCJobCommands.java | 4 +-- .../ssc/plugin/cli/cmd/SSCPluginCommands.java | 4 +-- .../cli/cmd/SSCReportTemplateCommands.java | 4 +-- .../cli/ssc/rest/cli/cmd/SSCRestCommands.java | 4 +-- .../cli/ssc/role/cli/cmd/SSCRoleCommands.java | 4 +-- .../cli/cmd/SSCRolePermissionCommands.java | 4 +-- .../cli/cmd/SSCSeedBundleCommands.java | 4 +-- .../ssc/token/cli/cmd/SSCTokenCommands.java | 4 +-- .../cli/cmd/SSCTokenDefinitionCommands.java | 4 +-- .../cli/ssc/user/cli/cmd/SSCUserCommands.java | 4 +-- .../cli/cmd/SSCVulnerabilityCommands.java | 4 +-- .../cli/tool/_main/cli/cmd/ToolCommands.java | 4 +-- .../cli/cmd/ToolFoDUploaderCommands.java | 4 +-- .../cli/cmd/ToolSCClientCommands.java | 4 +-- .../cli/cmd/ToolVulnExporterCommands.java | 4 +-- .../cli/util/_main/cli/cmd/UtilCommands.java | 4 +-- .../cli/cmd/AllCommandsCommands.java | 4 +-- .../cli/cmd/AllCommandsUsageCommand.java | 4 +-- .../cli/cmd/AutoCompleteCommands.java | 4 +-- .../cmd/AutoCompleteGenerationCommand.java | 4 +-- .../crypto/cli/cmd/AbstractCryptoCommand.java | 4 +-- .../util/crypto/cli/cmd/CryptoCommands.java | 4 +-- .../cli/cmd/SampleDataCommands.java | 4 +-- .../cli/util/state/cli/cmd/StateCommands.java | 4 +-- .../variable/cli/cmd/VariableCommands.java | 4 +-- 75 files changed, 176 insertions(+), 149 deletions(-) create mode 100644 fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractContainerCommand.java rename fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/{AbstractFortifyCLICommand.java => AbstractRunnableCommand.java} (97%) diff --git a/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/_main/cli/cmd/FCLIRootCommands.java b/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/_main/cli/cmd/FCLIRootCommands.java index 223e675551..06d1638bf0 100644 --- a/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/_main/cli/cmd/FCLIRootCommands.java +++ b/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/_main/cli/cmd/FCLIRootCommands.java @@ -13,7 +13,7 @@ package com.fortify.cli.app._main.cli.cmd; import com.fortify.cli.app.FortifyCLIVersionProvider; -import com.fortify.cli.common.cli.cmd.AbstractFortifyCLICommand; +import com.fortify.cli.common.cli.cmd.AbstractContainerCommand; import com.fortify.cli.common.util.DisableTest; import com.fortify.cli.common.util.DisableTest.TestType; import com.fortify.cli.config._main.cli.cmd.ConfigCommands; @@ -53,7 +53,7 @@ UtilCommands.class } ) -public class FCLIRootCommands extends AbstractFortifyCLICommand { +public class FCLIRootCommands extends AbstractContainerCommand { // We only want to have the --version option on the top-level fcli command, @Option(names = {"-V", "--version"}, versionHelp = true, scope = ScopeType.LOCAL, order = -1002) @DisableTest(TestType.OPT_SHORT_NAME) diff --git a/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/runner/util/FortifyCLIDynamicInitializer.java b/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/runner/util/FortifyCLIDynamicInitializer.java index d44fd963ca..786a820d88 100644 --- a/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/runner/util/FortifyCLIDynamicInitializer.java +++ b/fcli-core/fcli-app/src/main/java/com/fortify/cli/app/runner/util/FortifyCLIDynamicInitializer.java @@ -19,9 +19,9 @@ import org.slf4j.LoggerFactory; -import com.fortify.cli.common.cli.cmd.AbstractFortifyCLICommand; -import com.fortify.cli.common.cli.cmd.AbstractFortifyCLICommand.GenericOptionsArgGroup; -import com.fortify.cli.common.cli.cmd.AbstractFortifyCLICommand.LogLevel; +import com.fortify.cli.common.cli.cmd.AbstractRunnableCommand; +import com.fortify.cli.common.cli.cmd.AbstractRunnableCommand.GenericOptionsArgGroup; +import com.fortify.cli.common.cli.cmd.AbstractRunnableCommand.LogLevel; import ch.qos.logback.classic.Logger; import ch.qos.logback.classic.LoggerContext; @@ -111,7 +111,7 @@ private CommandLine createGenericOptionsCommandLine() { @Command(name = "fcli") @RequiredArgsConstructor - public static final class FortifyCLIInitializerCommand extends AbstractFortifyCLICommand implements Runnable { + public static final class FortifyCLIInitializerCommand extends AbstractRunnableCommand implements Runnable { private final Consumer consumer; @Override diff --git a/fcli-core/fcli-app/src/test/java/com/fortify/cli/FortifyCLITest.java b/fcli-core/fcli-app/src/test/java/com/fortify/cli/FortifyCLITest.java index df28465b24..0871efd271 100644 --- a/fcli-core/fcli-app/src/test/java/com/fortify/cli/FortifyCLITest.java +++ b/fcli-core/fcli-app/src/test/java/com/fortify/cli/FortifyCLITest.java @@ -101,7 +101,9 @@ private void checkOptions(Results results, CommandSpec cmdSpec) { private void checkStandardOptions(Results results, CommandSpec spec) { var optionNames = spec.optionsMap().keySet(); - var expectedOptionNames = Arrays.asList("-h", "--help", "--log-level", "--log-file", "--env-prefix"); + var expectedOptionNames = spec.userObject() instanceof Runnable + ? Arrays.asList("-h", "--help", "--log-level", "--log-file", "--env-prefix") + : Arrays.asList("-h", "--help"); if ( !optionNames.containsAll(expectedOptionNames) ) { results.add(TestType.CMD_STD_OPTS, Level.ERROR, spec, "Missing one or more standard option names: "+expectedOptionNames); } diff --git a/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractContainerCommand.java b/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractContainerCommand.java new file mode 100644 index 0000000000..93c82df210 --- /dev/null +++ b/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractContainerCommand.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2021, 2023 Open Text. + * + * The only warranties for products and services of Open Text + * and its affiliates and licensors ("Open Text") are as may + * be set forth in the express warranty statements accompanying + * such products and services. Nothing herein should be construed + * as constituting an additional warranty. Open Text shall not be + * liable for technical or editorial errors or omissions contained + * herein. The information contained herein is subject to change + * without notice. + *******************************************************************************/ +package com.fortify.cli.common.cli.cmd; + +import picocli.CommandLine.Option; + +/** + * This abstract class should be used as the base class for all fcli container commands. + * It is responsible for providing the standard help option. + * + * @author Ruud Senden + */ +public abstract class AbstractContainerCommand { + @Option(names = {"-h", "--help"}, usageHelp = true) + private boolean usageHelpRequested; +} diff --git a/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractFortifyCLICommand.java b/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractRunnableCommand.java similarity index 97% rename from fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractFortifyCLICommand.java rename to fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractRunnableCommand.java index 312de0bbe2..b581c0e6cd 100644 --- a/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractFortifyCLICommand.java +++ b/fcli-core/fcli-common/src/main/java/com/fortify/cli/common/cli/cmd/AbstractRunnableCommand.java @@ -25,7 +25,7 @@ import picocli.CommandLine.Spec; /** - * This abstract class should be used as the base class for all fcli commands. + * This abstract class should be used as the base class for all runnable fcli commands. * It is responsible for providing the following fcli features: *