org.jacoco.cli.internal.Command Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.jacoco.cli Show documentation
Show all versions of org.jacoco.cli Show documentation
JaCoCo Command Line Interface
/*******************************************************************************
* Copyright (c) 2009, 2018 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;
/**
* Flag whether output to stdout should be suppressed.
*/
@Option(name = "--quiet", usage = "suppress all output on stdout")
public boolean quiet = 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(description());
writer.println();
writer.println("Usage: " + parser.getCommand().usage(parser));
parser.printUsage(writer, null);
}
}