You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/29 09:35:22 UTC

svn commit: r700009 - in /geronimo/gshell/trunk/gshell-commands: gshell-optional/src/main/java/org/apache/geronimo/gshell/commands/optional/ gshell-optional/src/main/resources/META-INF/spring/ gshell-optional/src/main/resources/org/apache/geronimo/gshe...

Author: jdillon
Date: Mon Sep 29 00:35:22 2008
New Revision: 700009

URL: http://svn.apache.org/viewvc?rev=700009&view=rev
Log:
Drop 'cat' action in gshell-optional, make 'cat' in gshell-vfs behave more like it did in gshell-optional, sill need to support '-' and multi paths

Removed:
    geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/java/org/apache/geronimo/gshell/commands/optional/CatAction.java
    geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/org/apache/geronimo/gshell/commands/optional/CatAction.properties
Modified:
    geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/META-INF/spring/components.xml
    geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/CatAction.java
    geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/resources/org/apache/geronimo/gshell/commands/vfs/CatAction.properties

Modified: geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/META-INF/spring/components.xml?rev=700009&r1=700008&r2=700009&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/META-INF/spring/components.xml (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-optional/src/main/resources/META-INF/spring/components.xml Mon Sep 29 00:35:22 2008
@@ -29,10 +29,6 @@
 
     <gshell:plugin name="gshell-optional">
         <gshell:command-bundle name="default">
-            <gshell:command name="cat">
-                <gshell:action class="org.apache.geronimo.gshell.commands.optional.CatAction"/>
-            </gshell:command>
-
             <gshell:command name="exec">
                 <gshell:action class="org.apache.geronimo.gshell.commands.optional.ExecuteAction"/>
             </gshell:command>

Modified: geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/CatAction.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/CatAction.java?rev=700009&r1=700008&r2=700009&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/CatAction.java (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/java/org/apache/geronimo/gshell/commands/vfs/CatAction.java Mon Sep 29 00:35:22 2008
@@ -19,12 +19,20 @@
 
 package org.apache.geronimo.gshell.commands.vfs;
 
+import org.apache.commons.vfs.FileContent;
+import org.apache.commons.vfs.FileContentInfo;
 import org.apache.commons.vfs.FileObject;
-import org.apache.commons.vfs.FileUtil;
 import org.apache.commons.vfs.FileType;
 import org.apache.geronimo.gshell.clp.Argument;
+import org.apache.geronimo.gshell.clp.Option;
 import org.apache.geronimo.gshell.command.CommandContext;
 import org.apache.geronimo.gshell.io.IO;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
 
 /**
  * Displays the contents of a file.
@@ -37,10 +45,17 @@
     @Argument(required=true)
     private String path;
 
+    @Option(name="-n")
+    private boolean displayLineNumbers;
+
     public Object execute(final CommandContext context) throws Exception {
         assert context != null;
         IO io = context.getIo();
 
+        //
+        // TODO: Support multi-path cat, and the special '-' token (which is the default if no paths are given)
+        //
+
         FileObject file = resolveFile(context, path);
 
         if (!file.exists()) {
@@ -51,10 +66,42 @@
             io.error("File is a directory: {}", file.getName());
             return Result.FAILURE;
         }
-        
-        FileUtil.writeContent(file, io.outputStream);
+
+        FileContent content = file.getContent();
+        FileContentInfo info = content.getContentInfo();
+        log.debug("Content type: {}", info.getContentType());
+        log.debug("Content encoding: {}", info.getContentEncoding());
+
+        //
+        // TODO: Only cat files which we think are text
+        //
+
+        log.debug("Displaying file: {}", file.getName());
+
+        BufferedReader reader = new BufferedReader(new InputStreamReader(content.getInputStream()));
+        try {
+            cat(reader, io);
+        }
+        finally {
+            IOUtil.close(reader);
+        }
+
         io.out.println();
 
         return Result.SUCCESS;
     }
+
+    private void cat(final BufferedReader reader, final IO io) throws IOException {
+        String line;
+        int lineno = 1;
+
+        while ((line = reader.readLine()) != null) {
+            if (displayLineNumbers) {
+                String gutter = StringUtils.leftPad(String.valueOf(lineno++), 6);
+                io.out.print(gutter);
+                io.out.print("  ");
+            }
+            io.out.println(line);
+        }
+    }
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/resources/org/apache/geronimo/gshell/commands/vfs/CatAction.properties
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/resources/org/apache/geronimo/gshell/commands/vfs/CatAction.properties?rev=700009&r1=700008&r2=700009&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/resources/org/apache/geronimo/gshell/commands/vfs/CatAction.properties (original)
+++ geronimo/gshell/trunk/gshell-commands/gshell-vfs/src/main/resources/org/apache/geronimo/gshell/commands/vfs/CatAction.properties Mon Sep 29 00:35:22 2008
@@ -28,5 +28,7 @@
 command.argument.path=Path to file to display
 command.argument.path.token=PATH
 
+command.option.displayLineNumbers=Number the output lines, starting at 1
+
 command.manual=\
   TODO: cat manual
\ No newline at end of file