diff options
Diffstat (limited to 'asdctool/src/main/java/org/openecomp/sdc/asdctool/cli/CLITool.java')
-rw-r--r-- | asdctool/src/main/java/org/openecomp/sdc/asdctool/cli/CLITool.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/asdctool/src/main/java/org/openecomp/sdc/asdctool/cli/CLITool.java b/asdctool/src/main/java/org/openecomp/sdc/asdctool/cli/CLITool.java new file mode 100644 index 0000000000..053596d229 --- /dev/null +++ b/asdctool/src/main/java/org/openecomp/sdc/asdctool/cli/CLITool.java @@ -0,0 +1,56 @@ +package org.openecomp.sdc.asdctool.cli; + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * abstract base class to extend when implementing a cli tool + */ +public abstract class CLITool { + + private static final Logger LOGGER = LoggerFactory.getLogger(CLITool.class); + + public CLIToolData init(String[] args) { + CommandLine commandLine = initCmdLineOptions(args); + return new CLIToolData(commandLine); + } + + private CommandLine initCmdLineOptions(String[] args) { + Options options = buildCmdLineOptions(); + CommandLineParser parser = new DefaultParser(); + try { + return parser.parse( options, args ); + } + catch( ParseException exp ) { + LOGGER.error("Parsing failed. Reason: " + exp.getMessage() ); + usageAndExit(options); + return null; + } + } + + private void usageAndExit(Options options) { + HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp(commandName(), options ); + System.exit(1); + } + + /** + * + * @return all command line options required by this command line tool + */ + protected abstract Options buildCmdLineOptions(); + + /** + * + * @return the command name + */ + protected abstract String commandName(); + + +} |