You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2014/02/21 13:03:27 UTC

svn commit: r1570541 - in /maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg: AbstractGpgMojo.java AbstractGpgSigner.java GpgSigner.java

Author: stephenc
Date: Fri Feb 21 12:03:26 2014
New Revision: 1570541

URL: http://svn.apache.org/r1570541
Log:
[MGPG-49] Add support for --lock-* command line options

Modified:
    maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java
    maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java
    maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java

Modified: maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java?rev=1570541&r1=1570540&r2=1570541&view=diff
==============================================================================
--- maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java (original)
+++ maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgMojo.java Fri Feb 21 12:03:26 2014
@@ -21,6 +21,7 @@ package org.apache.maven.plugin.gpg;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -61,12 +62,12 @@ public abstract class AbstractGpgMojo
      * optional as the agent will provide it.
      * For gpg2, specify true as --no-use-agent was removed in gpg2 and doesn't ask for a passphrase anymore.
      */
-    @Parameter( property = "gpg.useagent", defaultValue = "false" )
+    @Parameter( property = "gpg.useagent", defaultValue = "false")
     private boolean useAgent;
 
     /**
      */
-    @Parameter( defaultValue = "${settings.interactiveMode}", readonly = true )
+    @Parameter( defaultValue = "${settings.interactiveMode}", readonly = true)
     private boolean interactive;
 
     /**
@@ -107,6 +108,31 @@ public abstract class AbstractGpgMojo
     @Parameter( property = "gpg.publicKeyring" )
     private String publicKeyring;
 
+    /**
+     * The lock mode to use when invoking gpg. By default no lock mode will be specified. Valid values are {@code once},
+     * {@code multiple} and {@code never}. The lock mode gets translated into the corresponding {@code --lock-___}
+     * command line argument. Improper usage of this option may lead to data and key corruption.
+     *
+     * @see <a href="http://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration-Options.html">the --lock-*
+     * options</a>
+     * @since 1.5
+     */
+    @Parameter( property = "gpg.lockMode" )
+    private String lockMode;
+
+    /**
+     * Sets the arguments to be passed to gpg. Example:
+     * <pre>
+     * &lt;gpgArguments&gt;
+     *   &lt;arg&gt;--no-random-seed-file&lt;/arg&gt;
+     *   &lt;arg&gt;--no-permission-warning&lt;/arg&gt;
+     * &lt;/gpgArguments&gt;
+     * </pre>
+     * @since 1.5
+     */
+    @Parameter
+    private List<String> gpgArguments;
+
     AbstractGpgSigner newSigner( MavenProject project )
         throws MojoExecutionException, MojoFailureException
     {
@@ -120,6 +146,8 @@ public abstract class AbstractGpgMojo
         signer.setDefaultKeyring( defaultKeyring );
         signer.setSecretKeyring( secretKeyring );
         signer.setPublicKeyring( publicKeyring );
+        signer.setLockMode( lockMode );
+        signer.setArgs( gpgArguments );
 
         signer.setPassPhrase( passphrase );
         if ( null == passphrase && !useAgent )

Modified: maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java?rev=1570541&r1=1570540&r2=1570541&view=diff
==============================================================================
--- maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java (original)
+++ maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/AbstractGpgSigner.java Fri Feb 21 12:03:26 2014
@@ -23,6 +23,7 @@ import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.List;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.logging.Log;
@@ -62,16 +63,30 @@ public abstract class AbstractGpgSigner
 
     protected String publicKeyring;
 
+    protected String lockMode;
+
+    protected List<String> args;
+
     public Log getLog()
     {
         return log;
     }
 
+    public void setArgs( List<String> args )
+    {
+        this.args = args;
+    }
+
     public void setInteractive( boolean b )
     {
         isInteractive = b;
     }
 
+    public void setLockMode( String lockMode )
+    {
+        this.lockMode = lockMode;
+    }
+
     public void setUseAgent( boolean b )
     {
         useAgent = b;

Modified: maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java?rev=1570541&r1=1570540&r2=1570541&view=diff
==============================================================================
--- maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java (original)
+++ maven/plugins/trunk/maven-gpg-plugin/src/main/java/org/apache/maven/plugin/gpg/GpgSigner.java Fri Feb 21 12:03:26 2014
@@ -22,6 +22,7 @@ package org.apache.maven.plugin.gpg;
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.InputStream;
+import java.util.Iterator;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.codehaus.plexus.util.Os;
@@ -66,6 +67,14 @@ public class GpgSigner
             cmd.setExecutable( "gpg" + ( Os.isFamily( Os.FAMILY_WINDOWS ) ? ".exe" : "" ) );
         }
 
+        if ( args != null )
+        {
+            for ( String arg : args )
+            {
+                cmd.createArg().setValue( arg );
+            }
+        }
+
         if ( homeDir != null )
         {
             cmd.createArg().setValue( "--homedir" );
@@ -128,6 +137,19 @@ public class GpgSigner
             cmd.createArg().setValue( publicKeyring );
         }
 
+        if ( "once".equalsIgnoreCase( lockMode ) )
+        {
+            cmd.createArg().setValue( "--lock-once" );
+        }
+        else if ( "multiple".equalsIgnoreCase( lockMode ) )
+        {
+            cmd.createArg().setValue( "--lock-multiple" );
+        }
+        else if ( "never".equalsIgnoreCase( lockMode ) )
+        {
+            cmd.createArg().setValue( "--lock-never" );
+        }
+
         cmd.createArg().setValue( "--output" );
         cmd.createArg().setFile( signature );