You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2011/03/31 09:58:33 UTC

svn commit: r1087208 - in /karaf/branches/karaf-2.2.x/shell/commands/src/main: java/org/apache/karaf/shell/commands/SourceAction.java resources/OSGI-INF/blueprint/shell-commands.xml

Author: gnodet
Date: Thu Mar 31 07:58:33 2011
New Revision: 1087208

URL: http://svn.apache.org/viewvc?rev=1087208&view=rev
Log:
[KARAF-551] Implement the shell:source command

Modified:
    karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java
    karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml

Modified: karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java?rev=1087208&r1=1087207&r2=1087208&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java (original)
+++ karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/SourceAction.java Thu Mar 31 07:58:33 2011
@@ -18,8 +18,74 @@
  */
 package org.apache.karaf.shell.commands;
 
+import java.io.BufferedReader;
+import java.io.CharArrayWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.karaf.shell.console.AbstractAction;
+
 /**
  * TODO
  */
-public class SourceAction {
+@Command(scope = "shell", name = "source", description = "Run a script")
+public class SourceAction extends AbstractAction {
+
+    @Argument(index = 0, name = "script", description = "A URI pointing to the script", required = true, multiValued = false)
+    private String script;
+
+    @Argument(index = 1, name = "args", description = "Arguments for the script", required = false, multiValued = true)
+    private List<Object> args;
+
+    @Override
+    protected Object doExecute() throws Exception {
+        BufferedReader reader = null;
+        Object arg0 = session.get("0");
+        try {
+            // First try a URL
+            try {
+                URL url = new URL(script);
+                log.info("Printing URL: " + url);
+                reader = new BufferedReader(new InputStreamReader(url.openStream()));
+            }
+            catch (MalformedURLException ignore) {
+                // They try a file
+                File file = new File(script);
+                log.info("Printing file: " + file);
+                reader = new BufferedReader(new FileReader(file));
+            }
+
+            CharArrayWriter w = new CharArrayWriter();
+            int n;
+            char[] buf = new char[8192];
+            while ((n = reader.read(buf)) > 0) {
+                w.write(buf, 0, n);
+            }
+
+            for (int i = 0; args != null && i < args.size(); i++) {
+                session.put( Integer.toString(i+1), args.get(i) );
+            }
+
+            return session.execute(w.toString());
+        } finally {
+            for (int i = 0; args != null && i < args.size(); i++) {
+                session.put( Integer.toString(i+1), null );
+            }
+            session.put("0", arg0);
+            if (reader != null) {
+                try {
+                    reader.close();
+                } catch (IOException e) {
+                    // Ignore
+                }
+            }
+        }
+    }
 }

Modified: karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml?rev=1087208&r1=1087207&r2=1087208&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml (original)
+++ karaf/branches/karaf-2.2.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml Thu Mar 31 07:58:33 2011
@@ -73,11 +73,9 @@
         <command name="shell/sort">
             <action class="org.apache.karaf.shell.commands.SortAction"/>
         </command>
-        <!--
         <command name="shell/source">
             <action class="org.apache.karaf.shell.commands.SourceAction"/>
         </command>
-        -->
         <command name="shell/tac">
             <action class="org.apache.karaf.shell.commands.TacAction"/>
         </command>