1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.oscal.tools.cli.core;
28
29 import gov.nist.secauto.metaschema.cli.processor.CLIProcessor;
30 import gov.nist.secauto.metaschema.cli.processor.ExitStatus;
31 import gov.nist.secauto.metaschema.model.MetaschemaVersion;
32 import gov.nist.secauto.metaschema.model.common.util.IVersionInfo;
33 import gov.nist.secauto.metaschema.model.common.util.MetaschemaJavaVersion;
34 import gov.nist.secauto.metaschema.model.common.util.ObjectUtils;
35 import gov.nist.secauto.oscal.lib.LibOscalVersion;
36 import gov.nist.secauto.oscal.lib.OscalVersion;
37 import gov.nist.secauto.oscal.tools.cli.core.commands.assessmentplan.AssessmentPlanCommand;
38 import gov.nist.secauto.oscal.tools.cli.core.commands.assessmentresults.AssessmentResultsCommand;
39 import gov.nist.secauto.oscal.tools.cli.core.commands.catalog.CatalogCommand;
40 import gov.nist.secauto.oscal.tools.cli.core.commands.componentdefinition.ComponentDefinitionCommand;
41 import gov.nist.secauto.oscal.tools.cli.core.commands.metaschema.MetaschemaCommand;
42 import gov.nist.secauto.oscal.tools.cli.core.commands.poam.PlanOfActionsAndMilestonesCommand;
43 import gov.nist.secauto.oscal.tools.cli.core.commands.profile.ProfileCommand;
44 import gov.nist.secauto.oscal.tools.cli.core.commands.ssp.SystemSecurityPlanCommand;
45
46 import java.util.List;
47
48 import edu.umd.cs.findbugs.annotations.NonNull;
49
50 @SuppressWarnings("PMD.ShortClassName")
51 public final class CLI {
52 public static void main(String[] args) {
53 System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager");
54
55 ExitStatus status = runCli(args);
56 int exitCode = status.getExitCode().getStatusCode();
57 System.exit(exitCode);
58 }
59
60 @NonNull
61 public static ExitStatus runCli(String... args) {
62 List<IVersionInfo> versions = ObjectUtils.notNull(
63 List.of(
64 new OscalCliVersion(),
65 new LibOscalVersion(),
66 new OscalVersion(),
67 new MetaschemaJavaVersion(),
68 new MetaschemaVersion()));
69 CLIProcessor processor = new CLIProcessor("oscal-cli", versions);
70 processor.addCommandHandler(new CatalogCommand());
71 processor.addCommandHandler(new ProfileCommand());
72 processor.addCommandHandler(new ComponentDefinitionCommand());
73 processor.addCommandHandler(new SystemSecurityPlanCommand());
74 processor.addCommandHandler(new AssessmentPlanCommand());
75 processor.addCommandHandler(new AssessmentResultsCommand());
76 processor.addCommandHandler(new PlanOfActionsAndMilestonesCommand());
77 processor.addCommandHandler(new MetaschemaCommand());
78 return processor.process(args);
79 }
80
81 private CLI() {
82
83 }
84 }