This is an automated email from the ASF dual-hosted git repository. stoty pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/phoenix-thirdparty.git
The following commit(s) were added to refs/heads/master by this push: new 22abbff PHOENIX-6349 Add and use commons-cli to phoenix-thirdparty 22abbff is described below commit 22abbff9e66b630f1060177b90baa55cb1edf403 Author: Istvan Toth <st...@apache.org> AuthorDate: Fri Jan 29 12:40:14 2021 +0100 PHOENIX-6349 Add and use commons-cli to phoenix-thirdparty includes a patch that lets us disable the double quote removing "feature" --- phoenix-shaded-commons-cli/pom.xml | 160 +++++++++++++++++++++ .../src/main/patches/CLI-254-1.4.patch | 72 ++++++++++ phoenix-shaded-guava/pom.xml | 2 +- pom.xml | 4 +- 4 files changed, 236 insertions(+), 2 deletions(-) diff --git a/phoenix-shaded-commons-cli/pom.xml b/phoenix-shaded-commons-cli/pom.xml new file mode 100644 index 0000000..037be39 --- /dev/null +++ b/phoenix-shaded-commons-cli/pom.xml @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <!-- +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.phoenix.thirdparty</groupId> + <artifactId>phoenix-thirdparty</artifactId> + <version>1.1.0-SNAPSHOT</version> + </parent> + <artifactId>phoenix-shaded-commons-cli</artifactId> + <name>Apache Phoenix Patched and Relocated (Shaded) Commons-CLI</name> + <description> + Pulls down commons-cli, patches it, compiles, and then relocates/shades. + </description> + <build> + <plugins> + <plugin> + <!--Clean needs to purge src/main/java since this is where + the unpack of commons-cli is overlaid. Do it for usual + clean goal but also before we unpack in case patches + delete/add files. We use src/main/java instead of dir + under 'target' because the jar plugin is dumb, hard to + make it source from other then src/main/java.--> + <artifactId>maven-clean-plugin</artifactId> + <executions> + <execution> + <id>pre-generate-sources</id> + <phase>generate-sources</phase> + <goals> + <goal>clean</goal> + </goals> + </execution> + </executions> + <configuration> + <filesets> + <fileset> + <directory>${basedir}/src/main/java</directory> + <includes> + <include>**/**</include> + </includes> + <followSymlinks>false</followSymlinks> + </fileset> + </filesets> + </configuration> + </plugin> + <plugin> + <!--Download our dependency src, i.e. commons-cli, and + unpack it. Overlays src/main/java so ready for + compile-time (the jar plugin expects src in + src/main/java)--> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>unpack</id> + <phase>generate-sources</phase> + <goals> + <goal>unpack</goal> + </goals> + <configuration> + <artifactItems> + <artifactItem> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>${commons-cli.version}</version> + <classifier>sources</classifier> + <type>jar</type> + <overWrite>true</overWrite> + <outputDirectory>${basedir}/src/main/java</outputDirectory> + </artifactItem> + </artifactItems> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + </plugin> + <!--Apply our patches to the unpacked commons-cli src--> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-patch-plugin</artifactId> + <version>1.2</version> + <configuration> + <targetDirectory>${basedir}</targetDirectory> + <skipApplication>false</skipApplication> + </configuration> + <executions> + <execution> + <id>patch</id> + <phase>process-sources</phase> + <goals> + <goal>apply</goal> + </goals> + <configuration> + <strip>0</strip> + <patchDirectory>${basedir}/src/main/patches</patchDirectory> + <patchTrackingFile>${project.build.directory}/patches-applied.txt</patchTrackingFile> + <naturalOrderProcessing>true</naturalOrderProcessing> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <executions> + <execution> + <id>attach-sources</id> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <!--Above we built a jar. Now at package step, do relocation/shade--> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-shade-plugin</artifactId> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>shade</goal> + </goals> + <configuration> + <shadeSourcesContent>true</shadeSourcesContent> + <createSourcesJar>true</createSourcesJar> + <relocations> + <relocation> + <pattern>org.apache.commons.cli</pattern> + <shadedPattern>${rename.offset}.org.apache.commons.cli</shadedPattern> + </relocation> + </relocations> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file diff --git a/phoenix-shaded-commons-cli/src/main/patches/CLI-254-1.4.patch b/phoenix-shaded-commons-cli/src/main/patches/CLI-254-1.4.patch new file mode 100644 index 0000000..4616fab --- /dev/null +++ b/phoenix-shaded-commons-cli/src/main/patches/CLI-254-1.4.patch @@ -0,0 +1,72 @@ +diff --git src/main/java/org/apache/commons/cli/DefaultParser.java src/main/java/org/apache/commons/cli/DefaultParser.java +index d762a3e..ebc324f 100644 +--- src/main/java/org/apache/commons/cli/DefaultParser.java ++++ src/main/java/org/apache/commons/cli/DefaultParser.java +@@ -54,7 +54,44 @@ public class DefaultParser implements CommandLineParser + + /** The required options and groups expected to be found when parsing the command line. */ + protected List expectedOpts; +- ++ ++ public DefaultParser() { ++ this.stripLeadingAndTrailingQuotes = true; ++ } ++ ++ /** Flag indicating if balanced leading and trailing double quotes should be stripped from option arguments. */ ++ private final boolean stripLeadingAndTrailingQuotes; ++ ++ /** ++ * Create a new DefaultParser instance with the specified partial matching and quote ++ * stripping policy. ++ * ++ * By "partial matching" we mean that given the following code: ++ * <pre> ++ * {@code ++ * final Options options = new Options(); ++ * options.addOption(new Option("d", "debug", false, "Turn on debug.")); ++ * options.addOption(new Option("e", "extract", false, "Turn on extract.")); ++ * options.addOption(new Option("o", "option", true, "Turn on option with argument.")); ++ * } ++ * </pre> ++ * with "partial matching" turned on, <code>-de</code> only matches the ++ * <code>"debug"</code> option. However, with "partial matching" disabled, ++ * <code>-de</code> would enable both <code>debug</code> as well as ++ * <code>extract</code> options. ++ * with "stripping of balanced leading and trailing double quotes from option arguments" turned ++ * on, the outermost balanced double quotes of option arguments values will be removed. ++ * ie. ++ * for <code>-o '"x"'</code> getValue() will return <code>x</code>, instead of <code>"x"</code> ++ * @param allowPartialMatching if partial matching of long options shall be enabled ++ * @param stripLeadingAndTrailingQuotes if balanced outer double quoutes should be stripped ++ */ ++ public DefaultParser(final boolean allowPartialMatching, ++ final boolean stripLeadingAndTrailingQuotes) { ++ // We do not care about allowPartialMatching in this patch ++ this.stripLeadingAndTrailingQuotes = stripLeadingAndTrailingQuotes; ++ } ++ + public CommandLine parse(Options options, String[] arguments) throws ParseException + { + return parse(options, arguments, null); +@@ -232,7 +269,7 @@ public class DefaultParser implements CommandLineParser + } + else if (currentOption != null && currentOption.acceptsArg() && isArgument(token)) + { +- currentOption.addValueForProcessing(Util.stripLeadingAndTrailingQuotes(token)); ++ currentOption.addValueForProcessing(conditionallyStripLeadingAndTrailingQuotes(token)); + } + else if (token.startsWith("--")) + { +@@ -704,4 +741,12 @@ public class DefaultParser implements CommandLineParser + } + } + } ++ ++ protected String conditionallyStripLeadingAndTrailingQuotes(final String token) { ++ if(stripLeadingAndTrailingQuotes) { ++ return Util.stripLeadingAndTrailingQuotes(token); ++ } else { ++ return token; ++ } ++ } + } diff --git a/phoenix-shaded-guava/pom.xml b/phoenix-shaded-guava/pom.xml index dba90c6..9b5ebd6 100644 --- a/phoenix-shaded-guava/pom.xml +++ b/phoenix-shaded-guava/pom.xml @@ -24,7 +24,7 @@ <parent> <groupId>org.apache.phoenix.thirdparty</groupId> <artifactId>phoenix-thirdparty</artifactId> - <version>1.0.1-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version> </parent> <artifactId>phoenix-shaded-guava</artifactId> diff --git a/pom.xml b/pom.xml index b72bffb..ce1ca05 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ <groupId>org.apache.phoenix.thirdparty</groupId> <artifactId>phoenix-thirdparty</artifactId> - <version>1.0.1-SNAPSHOT</version> + <version>1.1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>Apache Phoenix Third-Party Libs</name> <description>Packaging of relocated (renamed, shaded) third-party libraries used by Phoenix.</description> @@ -50,6 +50,7 @@ <modules> <module>phoenix-shaded-guava</module> + <module>phoenix-shaded-commons-cli</module> </modules> <scm> @@ -68,6 +69,7 @@ <properties> <rename.offset>org.apache.phoenix.thirdparty</rename.offset> <guava.version>29.0-android</guava.version> + <commons-cli.version>1.4</commons-cli.version> </properties> <build>