diff options
Diffstat (limited to 'org.jacoco.cli/src/org/jacoco/cli/internal/Command.java')
-rw-r--r-- | org.jacoco.cli/src/org/jacoco/cli/internal/Command.java | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/org.jacoco.cli/src/org/jacoco/cli/internal/Command.java b/org.jacoco.cli/src/org/jacoco/cli/internal/Command.java new file mode 100644 index 00000000..5e83b8b7 --- /dev/null +++ b/org.jacoco.cli/src/org/jacoco/cli/internal/Command.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright (c) 2009, 2017 Mountainminds GmbH & Co. KG and Contributors + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Marc R. Hoffmann - initial API and implementation + * + *******************************************************************************/ +package org.jacoco.cli.internal; + +import java.io.PrintWriter; +import java.io.StringWriter; + +import org.kohsuke.args4j.Option; + +/** + * Common interface for all commands. + */ +public abstract class Command { + + /** + * Common command line prefix. + */ + public static final String JAVACMD = "java -jar jacococli.jar "; + + /** + * Flag whether help should be printed for this command. + */ + @Option(name = "-help", usage = "show help", help = true) + public boolean help = false; + + /** + * @return Short description of the command. + */ + public abstract String description(); + + /** + * @return name of the command + */ + public String name() { + return getClass().getSimpleName().toLowerCase(); + } + + /** + * @param parser + * parser for this command + * @return usage string displayed for help + */ + public String usage(final CommandParser parser) { + final StringWriter writer = new StringWriter(); + parser.printSingleLineUsage(writer, null); + return JAVACMD + name() + writer; + } + + /** + * Executes the given command. + * + * @param out + * std out + * @param err + * std err + * @return exit code, should be 0 for normal operation + * @throws Exception + * any exception that my occur during execution + */ + public abstract int execute(PrintWriter out, PrintWriter err) + throws Exception; + + /** + * Prints textual help for this command. + * + * @param writer + * output destination + */ + protected void printHelp(final PrintWriter writer) { + final CommandParser parser = new CommandParser(this); + writer.println("Usage: " + parser.getCommand().usage(parser)); + writer.println(description()); + parser.printUsage(writer, null); + } + +} |