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