You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm-commits@maven.apache.org by ev...@apache.org on 2006/02/24 17:57:49 UTC

svn commit: r380709 - /maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java

Author: evenisse
Date: Fri Feb 24 08:57:47 2006
New Revision: 380709

URL: http://svn.apache.org/viewcvs?rev=380709&view=rev
Log:
Display file statuses

Modified:
    maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java

Modified: maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java
URL: http://svn.apache.org/viewcvs/maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java?rev=380709&r1=380708&r2=380709&view=diff
==============================================================================
--- maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java (original)
+++ maven/scm/trunk/maven-scm-plugin/src/main/java/org/apache/maven/scm/plugin/StatusMojo.java Fri Feb 24 08:57:47 2006
@@ -18,10 +18,14 @@
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
 import org.apache.maven.scm.command.status.StatusScmResult;
 import org.apache.maven.scm.repository.ScmRepository;
+import org.codehaus.plexus.util.StringUtils;
 
+import java.io.File;
 import java.io.IOException;
+import java.util.Iterator;
 
 /**
  * @author <a href="evenisse@apache.org">Emmanuel Venisse</a>
@@ -44,6 +48,26 @@
                 getScmManager().getProviderByRepository( repository ).status( repository, getFileSet() );
 
             checkResult( result );
+
+            File baseDir = getFileSet().getBasedir();
+
+            // Determine the maximum length of the status column
+            int maxLen = 0;
+
+            for ( Iterator iter = result.getChangedFiles().iterator(); iter.hasNext(); )
+            {
+                ScmFile file = (ScmFile) iter.next();
+                maxLen = Math.max( maxLen, file.getStatus().toString().length() );
+            }
+
+            for ( Iterator iter = result.getChangedFiles().iterator(); iter.hasNext(); )
+            {
+                ScmFile file = (ScmFile) iter.next();
+
+                // right align all of the statuses
+                getLog().info( StringUtils.leftPad( file.getStatus().toString(), maxLen ) + " " +
+                    getRelativePath( baseDir, file.getPath() ) );
+            }
         }
         catch ( IOException e )
         {
@@ -55,4 +79,27 @@
         }
     }
 
+    /**
+     * Formats the filename so that it is a relative directory from the base.
+     *
+     * @param baseDir
+     * @param path
+     * @return The relative path
+     */
+    protected String getRelativePath( File baseDir, String path )
+    {
+        if ( path.equals( baseDir.getAbsolutePath() ) )
+        {
+            return ".";
+        }
+        else if ( path.indexOf( baseDir.getAbsolutePath() ) == 0 )
+        {
+            // the + 1 gets rid of a leading file separator
+            return path.substring( baseDir.getAbsolutePath().length() + 1 );
+        }
+        else
+        {
+            return path;
+        }
+    }
 }