You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2013/02/07 16:36:27 UTC

svn commit: r1443560 - in /karaf/branches/karaf-2.3.x/shell/commands/src/main: java/org/apache/karaf/shell/commands/ resources/META-INF/services/org/apache/karaf/shell/ resources/OSGI-INF/ resources/OSGI-INF/blueprint/

Author: jbonofre
Date: Thu Feb  7 15:36:26 2013
New Revision: 1443560

URL: http://svn.apache.org/viewvc?rev=1443560&view=rev
Log:
[KARAF-2078] Create shell:date command

Added:
    karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/DateAction.java
Modified:
    karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
    karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
    karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/bundle.info

Added: karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/DateAction.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/DateAction.java?rev=1443560&view=auto
==============================================================================
--- karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/DateAction.java (added)
+++ karaf/branches/karaf-2.3.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/DateAction.java Thu Feb  7 15:36:26 2013
@@ -0,0 +1,102 @@
+/*
+ * 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.
+ */
+package org.apache.karaf.shell.commands;
+
+import org.apache.felix.gogo.commands.Argument;
+import org.apache.felix.gogo.commands.Command;
+import org.apache.felix.gogo.commands.Option;
+import org.apache.karaf.shell.console.AbstractAction;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Command(scope = "shell", name = "date", description = "Display the current time in the given FORMAT")
+public class DateAction extends AbstractAction {
+
+    @Option(name = "-d", aliases = { "--date" }, description = "Display time described, not now", multiValued = false, required = false)
+    private String date;
+
+    @Argument(index = 0, name = "format", description = "Output format", multiValued = false, required = false)
+    private String format;
+
+    protected Object doExecute() throws Exception {
+        Date d;
+        if (date == null || date.equalsIgnoreCase("now")) {
+            d = new Date();
+        } else {
+            if (date.startsWith("@")) {
+                d = new Date(Long.parseLong(date.substring(1)));
+            } else {
+                d = new Date(date);
+            }
+        }
+        if (format == null) {
+            System.out.println(d);
+        } else {
+            // transform Unix format to Java SimpleDateFormat (if required)
+            format = format.replaceAll("%a","EEE");
+            format = format.replaceAll("%A", "EEEEEEE");
+            format = format.replaceAll("%b", "MMM");
+            format = format.replaceAll("%B", "MMMMMMM");
+            format = format.replaceAll("%c", "MMM EEE d HH:mm:ss yyyy");
+            format = format.replaceAll("%C","yy");
+            format = format.replaceAll("%d", "dd");
+            format = format.replaceAll("%D", "MM/dd/yy");
+            format = format.replaceAll("%e", "dd");
+            format = format.replaceAll("%F", "yyyy-MM-dd");
+            format = format.replaceAll("%g", "YY");
+            format = format.replaceAll("%G", "YYYY");
+            format = format.replaceAll("%h", "MMM");
+            format = format.replaceAll("%H", "HH");
+            format = format.replaceAll("%I", "hh");
+            format = format.replaceAll("%j", "DDD");
+            format = format.replaceAll("%k", "HH");
+            format = format.replaceAll("%l", "hh");
+            format = format.replaceAll("%m", "MM");
+            format = format.replaceAll("%M", "mm");
+            format = format.replaceAll("%n", "\n");
+            format = format.replaceAll("%N", "S");
+            format = format.replaceAll("%p", "aa");
+            format = format.replaceAll("%P", "aa");
+            format = format.replaceAll("%r", "hh:mm:ss aa");
+            format = format.replaceAll("%R", "HH:mm");
+            format = format.replaceAll("%s", "S");
+            format = format.replaceAll("%S", "ss");
+            format = format.replaceAll("%t", "\t");
+            format = format.replaceAll("%T", "HH:mm:ss");
+            format = format.replaceAll("%u", "u");
+            format = format.replaceAll("%U", "w");
+            format = format.replaceAll("%V", "W");
+            format = format.replaceAll("%w", "u");
+            format = format.replaceAll("%W", "w");
+            format = format.replaceAll("%x", "MM/dd/yy");
+            format = format.replaceAll("%X", "HH:mm:ss");
+            format = format.replaceAll("%y", "yy");
+            format = format.replaceAll("%Y", "yyyy");
+            format = format.replaceAll("%z", "X");
+            format = format.replaceAll("%:z", "XXX");
+            format = format.replaceAll("%::z", "XXXX");
+            format = format.replaceAll("%:::z", "XXXX");
+            format = format.replaceAll("%Z", "z");
+            DateFormat df = new SimpleDateFormat(format);
+            System.out.println(df.format(d));
+        }
+        return null;
+    }
+
+}

Modified: karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands?rev=1443560&r1=1443559&r2=1443560&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands (original)
+++ karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/META-INF/services/org/apache/karaf/shell/commands Thu Feb  7 15:36:26 2013
@@ -16,6 +16,7 @@
 ##---------------------------------------------------------------------------
 org.apache.karaf.shell.commands.CatAction
 org.apache.karaf.shell.commands.ClearAction
+org.apache.karaf.shell.commands.DateAction
 org.apache.karaf.shell.commands.EachAction
 org.apache.karaf.shell.commands.EchoAction
 org.apache.karaf.shell.commands.ExecuteAction

Modified: karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml?rev=1443560&r1=1443559&r2=1443560&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml (original)
+++ karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/blueprint/shell-commands.xml Thu Feb  7 15:36:26 2013
@@ -26,6 +26,9 @@
         <command name="shell/clear">
             <action class="org.apache.karaf.shell.commands.ClearAction"/>
         </command>
+        <command name="shell/date">
+            <action class="org.apache.karaf.shell.commands.DateAction"/>
+        </command>
         <command name="shell/each">
             <action class="org.apache.karaf.shell.commands.EachAction"/>
         </command>

Modified: karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/bundle.info
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/bundle.info?rev=1443560&r1=1443559&r2=1443560&view=diff
==============================================================================
--- karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/bundle.info (original)
+++ karaf/branches/karaf-2.3.x/shell/commands/src/main/resources/OSGI-INF/bundle.info Thu Feb  7 15:36:26 2013
@@ -12,6 +12,7 @@
     The following commands are available:
     \u001B[36mshell:cat\u001B[0m Displays the content of a file or url.
     \u001B[36mshell:clear\u001B[0m Clears the console buffer.
+    \u001B[36mshell:date\u001B[0m Display the current time in the given FORMAT
     \u001B[36mshell:each\u001B[0m Execute a closure on a list of arguments.
     \u001B[36mshell:echo\u001B[0m Echoes or prints arguments to STDOUT.
     \u001B[36mshell:exec\u001B[0m Executes system processes.