package net.jangaroo.jooc.config; import net.jangaroo.utils.FileLocations; import org.kohsuke.args4j.Option; import java.io.File; /** * Jangaroo compiler configuration */ public class JoocConfiguration extends FileLocations implements JoocOptions, ParserOptions { private SemicolonInsertionMode semicolonInsertionMode = SemicolonInsertionMode.WARN; private DebugMode debugMode; private boolean help, version, verbose, enableAssertions; private PublicApiViolationsMode publicApiViolationsMode = PublicApiViolationsMode.WARN; private boolean excludeClassByDefault = false; private boolean allowDuplicateLocalVariables; private File apiOutputDirectory; private boolean mergeOutput = false; private String outputFileName; public SemicolonInsertionMode getSemicolonInsertionMode() { return semicolonInsertionMode; } @Option(name = "-autosemicolon", usage = "automatic semicolon insertion mode, possible modes: error, warn (default), quirk (no warnings)") public void setSemicolonInsertionMode(final SemicolonInsertionMode semicolonInsertionMode) { this.semicolonInsertionMode = semicolonInsertionMode; } public boolean isMergeOutput() { return mergeOutput; } public void setMergeOutput(boolean mergeOutput) { this.mergeOutput = mergeOutput; } public String getOutputFileName() { return outputFileName; } public void setOutputFileName(String outputFileName) { this.outputFileName = outputFileName; } public File getOutputFile() { return new File(outputFileName); } public DebugMode getDebugMode() { return debugMode; } @Option(name="-g", usage ="generate debuggable output (possible modes: source, lines, none)") public void setDebugMode(DebugMode debugMode) { this.debugMode = debugMode; } public boolean isVerbose() { return verbose; } @Option(name="-v", aliases = "--verbose", usage="be extra verbose") public void setVerbose(boolean verbose) { this.verbose = verbose; } @Override public boolean isGenerateApi() { return apiOutputDirectory != null; } @Override public PublicApiViolationsMode getPublicApiViolationsMode() { return publicApiViolationsMode; } @Option(name="-pav", aliases = "--publicApiViolations", usage = "Severity of public API violations, i.e. using classes that are annotated with [ExcludeClass]: error, warn, allow") public void setPublicApiViolationsMode(PublicApiViolationsMode warnPublicApiViolations) { this.publicApiViolationsMode = warnPublicApiViolations; } public boolean isExcludeClassByDefault() { return excludeClassByDefault; } @Option(name="-ec", aliases = "--excludeClassByDefault", usage = "Whether to add an [ExcludeClass] annotation to a class whenever no [PublicApi] annotation is present; defaults to false") public void setExcludeClassByDefault(boolean excludeClassByDefault) { this.excludeClassByDefault = excludeClassByDefault; } public boolean isHelp() { return help; } @Option(name="-h", aliases = "--help", usage = "print this message") public void setHelp(boolean help) { this.help = help; } public boolean isVersion() { return version; } @Option(name="-version", usage = "print version information and exit") public void setVersion(boolean version) { this.version = version; } public boolean isEnableAssertions() { return enableAssertions; } @Option(name="-ea", aliases = "--enableassertions", usage = "enable assertions") public void setEnableAssertions(boolean enableAssertions) { this.enableAssertions = enableAssertions; } public boolean isAllowDuplicateLocalVariables() { return allowDuplicateLocalVariables; } @Option(name="-ad", aliases = "--allowduplicatelocalvariables", usage = "allow multiple declarations of local variables") public void setAllowDuplicateLocalVariables(boolean allowDuplicateLocalVariables) { this.allowDuplicateLocalVariables = allowDuplicateLocalVariables; } public File getApiOutputDirectory() { return apiOutputDirectory; } @Option(name="-api", aliases = "--apiDir", usage = "destination directory where to generate ActionScript API stubs") public void setApiOutputDirectory(final File apiOutputDirectory) { this.apiOutputDirectory = apiOutputDirectory; } }