GROOVY-8567: minor tweaks for Groovyc to picocli conversion (closes #703)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/f03b04a7 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/f03b04a7 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/f03b04a7 Branch: refs/heads/master Commit: f03b04a77db26a9555dac46de7bd4dd4728d7fa9 Parents: 96bac63 Author: Paul King <pa...@asert.com.au> Authored: Thu May 17 23:13:42 2018 +1000 Committer: Paul King <pa...@asert.com.au> Committed: Thu May 17 23:13:42 2018 +1000 ---------------------------------------------------------------------- gradle/assemble.gradle | 10 +++- gradle/pomconfigurer.gradle | 3 + .../groovy/tools/FileSystemCompiler.java | 62 +++++++++++++++----- .../java/org/codehaus/groovy/ant/Groovyc.java | 2 +- .../groovy/groovy/cli/commons/CliBuilder.groovy | 2 +- .../groovy/groovy/cli/picocli/CliBuilder.groovy | 2 +- .../org/codehaus/groovy/tools/shell/Main.groovy | 1 + 7 files changed, 60 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/gradle/assemble.gradle ---------------------------------------------------------------------- diff --git a/gradle/assemble.gradle b/gradle/assemble.gradle index f76fe99..d4844bd 100644 --- a/gradle/assemble.gradle +++ b/gradle/assemble.gradle @@ -199,7 +199,7 @@ allprojects { return component.module in [ 'antlr', 'antlr-runtime', 'antlr4', 'antlr4-runtime', 'antlr4-annotations', 'asm', 'asm-commons', 'asm-tree', 'asm-util', - 'commons-cli'] + 'commons-cli', 'picocli'] } return false } @@ -212,13 +212,17 @@ allprojects { 'org/codehaus/groovy/cli/GroovyPosixParser*.class', 'groovy/util/CliBuilder*.class', 'groovy/util/OptionAccessor*.class', - 'org/codehaus/groovy/tools/shell/util/HelpFormatter*.class' + 'org/codehaus/groovy/tools/shell/util/HelpFormatter*.class', + 'groovy/cli/commons/CliBuilder*.class', + 'groovy/cli/commons/OptionAccessor*.class', + 'groovy/cli/picocli/CliBuilder*.class' ] patterns = [ 'antlr.**' : 'groovyjarjarantlr.@1', // antlr2 'org.antlr.**' : 'groovyjarjarantlr4.@1', // antlr4 'org.objectweb.**' : 'groovyjarjarasm.@1', - 'org.apache.commons.cli.**': 'groovyjarjarcommonscli.@1' + 'org.apache.commons.cli.**': 'groovyjarjarcommonscli.@1', + 'picocli.**': 'groovyjarjarpicocli.@1' ] excludesPerLibrary = [ '*': ['META-INF/maven/**', 'META-INF/*', 'META-INF/services/javax.annotation.processing.Processor', 'module-info.class'] http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/gradle/pomconfigurer.gradle ---------------------------------------------------------------------- diff --git a/gradle/pomconfigurer.gradle b/gradle/pomconfigurer.gradle index 3ce9ada..31ea58a 100644 --- a/gradle/pomconfigurer.gradle +++ b/gradle/pomconfigurer.gradle @@ -627,6 +627,9 @@ project.ext.pomConfigureClosureWithoutTweaks = { contributor { name 'Tom Nichols' } + contributor { + name 'Remko Popma' + } } mailingLists { mailingList { http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java b/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java index 8b54b30..cd00053 100644 --- a/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java +++ b/src/main/java/org/codehaus/groovy/tools/FileSystemCompiler.java @@ -18,24 +18,32 @@ */ package org.codehaus.groovy.tools; +import groovy.lang.DeprecationException; import groovy.lang.GroovyResourceLoader; import groovy.lang.GroovySystem; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Options; -import picocli.CommandLine; -import picocli.CommandLine.*; import org.codehaus.groovy.control.CompilationUnit; import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.control.ConfigurationException; import org.codehaus.groovy.runtime.DefaultGroovyStaticMethods; import org.codehaus.groovy.runtime.StringGroovyMethods; import org.codehaus.groovy.tools.javac.JavaAwareCompilationUnit; - -import java.io.*; +import picocli.CommandLine; +import picocli.CommandLine.Command; +import picocli.CommandLine.IVersionProvider; +import picocli.CommandLine.Option; +import picocli.CommandLine.Parameters; +import picocli.CommandLine.ParseResult; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.io.PrintWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,13 +80,6 @@ public class FileSystemCompiler { unit.compile(); } - /** @deprecated use {@link #displayHelp(PrintWriter)} instead */ - @Deprecated - public static void displayHelp(final Options options) { - final HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp(80, "groovyc [options] <source-files>", "options:", options, ""); - } - /** Prints the usage help message for {@link CompilationOptions} to stderr. * @see #displayHelp(PrintWriter) * @since 2.5 */ @@ -86,19 +87,20 @@ public class FileSystemCompiler { displayHelp(new PrintWriter(System.err, true)); } - /** Prints the usage help message for the {@link CompilationOptions} to the specified PrintWriter. */ + /** Prints the usage help message for the {@link CompilationOptions} to the specified PrintWriter. + * @since 2.5 */ public static void displayHelp(final PrintWriter writer) { configureParser(new CompilationOptions()).usage(writer); } /** Prints version information to stderr. - * @see #displayVersion(PrintWriter) - * @since 2.5 */ + * @see #displayVersion(PrintWriter) */ public static void displayVersion() { displayVersion(new PrintWriter(System.err, true)); } - /** Prints version information to the specified PrintWriter. */ + /** Prints version information to the specified PrintWriter. + * @since 2.5 */ public static void displayVersion(final PrintWriter writer) { for (String line : new VersionProvider().getVersion()) { writer.println(line); @@ -288,6 +290,8 @@ public class FileSystemCompiler { } } + /** + * @since 2.5 */ static class VersionProvider implements IVersionProvider { @Override public String[] getVersion() { @@ -299,6 +303,8 @@ public class FileSystemCompiler { } } + /** + * @since 2.5 */ @Command(name = "groovyc", customSynopsis = "groovyc [options] <source-files>", sortOptions = false, @@ -422,6 +428,30 @@ public class FileSystemCompiler { } } + /** @deprecated use {@link #displayHelp(PrintWriter)} instead */ + @Deprecated + public static void displayHelp(final Options options) { + final HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp(80, "groovyc [options] <source-files>", "options:", options, ""); + } + + // some methods to avoid binary incompatibility - don't gain us a lot but gives the user + // something slightly less cryptic than a NoSuchMethodError or an IncompatibleClassChangeError + @Deprecated + public static CompilerConfiguration generateCompilerConfigurationFromOptions(org.apache.commons.cli.CommandLine cli) throws IOException { + throw new DeprecationException("This method is not supported for Groovy 2.5+. Consider instead using the FileSystemCompiler.CompilationOptions class."); + } + + @Deprecated + public static String[] generateFileNamesFromOptions(org.apache.commons.cli.CommandLine cli) { + throw new DeprecationException("This method is not supported for Groovy 2.5+. Consider instead using the FileSystemCompiler.CompilationOptions class."); + } + + @Deprecated + public static Options createCompilationOptions() { + throw new DeprecationException("This method is not supported for Groovy 2.5+. Consider instead using the FileSystemCompiler.CompilationOptions class."); + } + /** * Creates a temporary directory in the default temporary directory (as specified by the system * property <i>java.io.tmpdir</i>. http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java ---------------------------------------------------------------------- diff --git a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java index 7a60ac8..8c57bcc 100644 --- a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java +++ b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovyc.java @@ -161,7 +161,7 @@ import java.util.StringTokenizer; * </project> * </pre> * <p> - * Based heavily on the implementation of the Javac task in Apache Ant. + * Based on the implementation of the Javac task in Apache Ant. * <p> * Can also be used from {@link groovy.util.AntBuilder} to allow the build file to be scripted in Groovy. */ http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/subprojects/groovy-cli-commons/src/main/groovy/groovy/cli/commons/CliBuilder.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-cli-commons/src/main/groovy/groovy/cli/commons/CliBuilder.groovy b/subprojects/groovy-cli-commons/src/main/groovy/groovy/cli/commons/CliBuilder.groovy index 790cb82..237b631 100644 --- a/subprojects/groovy-cli-commons/src/main/groovy/groovy/cli/commons/CliBuilder.groovy +++ b/subprojects/groovy-cli-commons/src/main/groovy/groovy/cli/commons/CliBuilder.groovy @@ -348,7 +348,7 @@ class CliBuilder { * Make options accessible from command line args with parser. * Returns null on bad command lines after displaying usage message. */ - groovy.cli.commons.OptionAccessor parse(args) { + OptionAccessor parse(args) { if (expandArgumentFiles) args = expandArgumentFiles(args) if (!parser) { parser = posix != null && posix == false ? new GnuParser() : new DefaultParser() http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy b/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy index b196a67..aacd832 100644 --- a/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy +++ b/subprojects/groovy-cli-picocli/src/main/groovy/groovy/cli/picocli/CliBuilder.groovy @@ -510,7 +510,7 @@ class CliBuilder { * Sets the {@link #posix} property on this <code>CliBuilder</code> and the * <code>posixClusteredShortOptionsAllowed</code> property on the {@link #parser} * used by the underlying library. - * @param poxis whether to allow clustered short options + * @param posix whether to allow clustered short options */ void setPosix(boolean posix) { this.posix = posix http://git-wip-us.apache.org/repos/asf/groovy/blob/f03b04a7/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Main.groovy ---------------------------------------------------------------------- diff --git a/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Main.groovy b/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Main.groovy index 643f81f..acdc258 100644 --- a/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Main.groovy +++ b/subprojects/groovy-groovysh/src/main/groovy/org/codehaus/groovy/tools/shell/Main.groovy @@ -19,6 +19,7 @@ package org.codehaus.groovy.tools.shell import groovy.cli.commons.CliBuilder +import groovy.cli.commons.OptionAccessor import jline.TerminalFactory import jline.UnixTerminal import jline.UnsupportedTerminal