@GwtIncompatible(value="Unnecessary") public abstract class AbstractCommandLineRunner<A extends Compiler,B extends CompilerOptions> extends Object
class MyCommandLineRunner extends AbstractCommandLineRunner<MyCompiler, MyOptions> { MyCommandLineRunner(String[] args) { super(args); } @Override protected MyOptions createOptions() { MyOptions options = new MyOptions(); CompilerFlagTranslator.setOptionsFromFlags(options); addMyCrazyCompilerPassThatOutputsAnExtraFile(options); return options; } @Override protected MyCompiler createCompiler() { return new MyCompiler(); } public static void main(String[] args) { (new MyCommandLineRunner(args)).run(); } }
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractCommandLineRunner.CommandLineConfig
Configurations for the command line configs.
|
protected static class |
AbstractCommandLineRunner.FlagEntry<T>
A pair from flag to its value.
|
static class |
AbstractCommandLineRunner.FlagUsageException
An exception thrown when command-line flags are used incorrectly.
|
static class |
AbstractCommandLineRunner.JsModuleSpec
Represents a specification for a js module.
|
protected static class |
AbstractCommandLineRunner.JsonFileSpec
Representation of a source file from an encoded json stream input
|
protected static class |
AbstractCommandLineRunner.JsSourceType
Flag types for js source files.
|
Modifier and Type | Method and Description |
---|---|
protected abstract void |
addWhitelistWarningsGuard(CompilerOptions options,
File whitelistFile) |
protected void |
checkModuleName(String name)
Validates the module name.
|
protected abstract A |
createCompiler()
Returns the instance of the Compiler to use when
run() is
called. |
protected List<SourceFile> |
createExterns(CompilerOptions options) |
protected List<SourceFile> |
createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files,
boolean allowStdIn,
List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs)
Creates inputs from a list of files.
|
protected List<SourceFile> |
createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files,
List<AbstractCommandLineRunner.JsonFileSpec> jsonFiles,
boolean allowStdIn,
List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs)
Creates inputs from a list of source files, zips and json files.
|
protected List<SourceFile> |
createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files,
List<AbstractCommandLineRunner.JsonFileSpec> jsonFiles,
List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs)
Creates inputs from a list of source files and json files.
|
protected abstract B |
createOptions()
Returns the instance of the Options to use when
run() is called. |
protected int |
doRun()
Parses command-line arguments and runs the compiler.
|
protected OutputStream |
filenameToOutputStream(String fileName)
Converts a file name into a Outputstream.
|
static List<SourceFile> |
getBuiltinExterns(CompilerOptions.Environment env) |
protected AbstractCommandLineRunner.CommandLineConfig |
getCommandLineConfig()
Get the command line config, so that it can be initialized.
|
protected A |
getCompiler() |
protected DiagnosticGroups |
getDiagnosticGroups()
The warning classes that are available from the command-line.
|
protected PrintStream |
getErrorPrintStream()
Returns the PrintStream for writing errors associated with this
AbstractCommandLineRunner.
|
protected boolean |
isInTestMode()
Returns whether we're in test mode.
|
List<AbstractCommandLineRunner.JsonFileSpec> |
parseJsonFilesFromInputStream() |
static List<JSError> |
removeDuplicateZipEntries(List<SourceFile> sourceFiles,
List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs)
Check that relative paths inside zip files are unique, since multiple files
with the same path inside different zips are considered duplicate inputs.
|
void |
run()
Runs the Compiler and calls System.exit() with the exit status of the
compiler.
|
void |
setExitCodeReceiver(com.google.common.base.Function<Integer,Void> newExitCodeReceiver) |
protected void |
setRunOptions(CompilerOptions options)
Sets options based on the configurations set flags API.
|
protected static void |
setWarningGuardOptions(CompilerOptions options,
ArrayList<AbstractCommandLineRunner.FlagEntry<CheckLevel>> warningGuards,
DiagnosticGroups diagnosticGroups) |
public void setExitCodeReceiver(com.google.common.base.Function<Integer,Void> newExitCodeReceiver)
newExitCodeReceiver
- receives a non-zero integer to indicate a
problem during execution or 0i to indicate success.protected boolean isInTestMode()
protected AbstractCommandLineRunner.CommandLineConfig getCommandLineConfig()
protected abstract A createCompiler()
run()
is
called.protected abstract B createOptions()
run()
is called.
createCompiler() is called before createOptions(), so getCompiler()
will not return null when createOptions() is called.protected DiagnosticGroups getDiagnosticGroups()
protected abstract void addWhitelistWarningsGuard(CompilerOptions options, File whitelistFile)
protected static void setWarningGuardOptions(CompilerOptions options, ArrayList<AbstractCommandLineRunner.FlagEntry<CheckLevel>> warningGuards, DiagnosticGroups diagnosticGroups)
protected void setRunOptions(CompilerOptions options) throws IOException
IOException
protected final A getCompiler()
public static List<SourceFile> getBuiltinExterns(CompilerOptions.Environment env) throws IOException
IOException
public final void run()
protected final PrintStream getErrorPrintStream()
public List<AbstractCommandLineRunner.JsonFileSpec> parseJsonFilesFromInputStream() throws IOException
IOException
protected List<SourceFile> createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files, boolean allowStdIn, List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs) throws IOException
files
- A list of flag entries indicates js and zip file names.allowStdIn
- Whether '-' is allowed appear as a filename to represent
stdin. If true, '-' is only allowed to appear once.jsModuleSpecs
- A list js module specs.IOException
protected List<SourceFile> createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files, List<AbstractCommandLineRunner.JsonFileSpec> jsonFiles, List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs) throws IOException
files
- A list of flag entries indicates js and zip file names.jsonFiles
- A list of json encoded files.jsModuleSpecs
- A list js module specs.IOException
public static List<JSError> removeDuplicateZipEntries(List<SourceFile> sourceFiles, List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs) throws IOException
sourceFiles
may be modified if duplicates are removed.IOException
protected List<SourceFile> createInputs(List<AbstractCommandLineRunner.FlagEntry<AbstractCommandLineRunner.JsSourceType>> files, List<AbstractCommandLineRunner.JsonFileSpec> jsonFiles, boolean allowStdIn, List<AbstractCommandLineRunner.JsModuleSpec> jsModuleSpecs) throws IOException
files
- A list of flag entries indicates js and zip file namesjsonFiles
- A list of json encoded files.allowStdIn
- Whether '-' is allowed appear as a filename to represent
stdin. If true, '-' is only allowed to appear once.jsModuleSpecs
- A list js module specs.IOException
protected void checkModuleName(String name)
name
- The module nameprotected int doRun() throws IOException
IOException
protected List<SourceFile> createExterns(CompilerOptions options) throws IOException
IOException
protected OutputStream filenameToOutputStream(String fileName) throws IOException
IOException
Copyright © 2009-2016 Google. All Rights Reserved.