Basic Commands

Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/8e93a3f8
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/8e93a3f8
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/8e93a3f8

Branch: refs/heads/master
Commit: 8e93a3f85f94bb767273dd41670de4a3bf000b8c
Parents: ddd1245
Author: Menaka <menaka12...@gmail.com>
Authored: Sun Jun 7 21:52:31 2015 +0530
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Thu Jun 11 17:33:28 2015 +0100

----------------------------------------------------------------------
 .../taverna/commandline/CommandLineTool.java    | 239 +++++++++++++++++++
 .../taverna/commandline/TavernaCommandline.java |  29 +++
 2 files changed, 268 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/8e93a3f8/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/CommandLineTool.java
----------------------------------------------------------------------
diff --git 
a/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/CommandLineTool.java
 
b/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/CommandLineTool.java
new file mode 100644
index 0000000..46af29f
--- /dev/null
+++ 
b/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/CommandLineTool.java
@@ -0,0 +1,239 @@
+package org.apache.taverna.commandline;
+
+
+/*
+ * 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.
+ */
+
+
+import io.airlift.airline.Arguments;
+import io.airlift.airline.Cli;
+import io.airlift.airline.Cli.CliBuilder;
+import io.airlift.airline.Command;
+import io.airlift.airline.Help;
+import io.airlift.airline.Option;
+
+import java.io.File;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+
+
+/*
+ * The command line options for convert, validate and inspect workflows.
+ * Use the airlift/airline library
+ * Author: Menaka Madushanka <menaka12...@gmail.com>
+ * */
+
+public class CommandLineTool {
+       
+       private Cli<TvnLangTool> parser(){
+               CliBuilder<TvnLangTool> build = 
Cli.<TvnLangTool>builder("tvnlang")
+                               .withDescription("Convert, manage workflows")
+                               .withDefaultCommand(HelpCommand.class)
+                               .withCommand(CommandConvert.class)
+                               .withCommand(HelpCommand.class)
+                               .withCommand(CommandInspect.class)
+                               .withCommand(CommandValidate.class)
+                               .withCommand(CommandVersion.class);
+               
+               return build.build();
+       }
+
+       public CommandLineTool(){};
+       public void parse(String... args)
+    {
+        System.out.println("$ tvnlang " + Joiner.on(" ").join(args));
+        TvnLangTool command = parser().parse(args);
+        command.execute();
+        System.out.println();
+    }
+       
+       public static abstract class TvnLangTool{
+
+               public abstract void execute();
+       }
+       
+       //placeholder for output file types
+       public static class Filetypes{
+               @Option(name= "-wfdesc", description="Convert the workflow file 
to wfdesc-turtle")
+               public static boolean isWfdesc = false;
+               
+               @Option(name="-wfbundel", description="Convert the workflow 
file to wfbundel")
+               public static boolean isWfbundel = false;
+               
+               @Option(name =  "-robundel", description = "Convert given 
bundel in to Research Object bundel")
+               public static boolean isRo = false;
+               
+               @Option(name= "-structure", description = "Convert the workflow 
into *.structure")
+               public static boolean isStructure = false;
+
+               @Option(name = "-json", description = "Convert the workflow 
into json")
+               public static boolean isJson = false;
+               
+               //The tool can only handle one output format at a time.
+               //Return the file type which is selected
+               public static String isTrue(){
+                       if(isWfdesc) return "wfdesc";
+                       else if(isWfbundel) return "wfbundel";
+                       else if(isRo) return "ro";
+                       else if(isStructure) return "structure";
+                       else if(isJson) return "json";
+                       else return null;
+               }
+               
+               
+       }
+       
+       
+       //Placeholder for optional parameters: Ex: -i, -o 
+       public static class Optional{
+               
+               //The input file or directory
+               @Option(name = {"-i", "--input"}, description="Input file/ file 
dir for convertion")
+               public static String in_file_dir;
+               
+               //The out put file or directory. When this is set, all the 
converted files will be saved into the directory that specified.
+               @Option(name = {"-o", "--output"}, description="Output file/ 
directory")
+               public static String out_file_dir;
+               
+               public static String getInFile(){
+                       return in_file_dir;
+               }
+               
+               public static String getOutFile(){
+                       return out_file_dir;
+               }
+
+//             public boolean isMulti(){
+//                     return this.multi;
+//             }
+       }
+       
+       @Command(name = "help", description = "Display help information about 
Tvarna")
+       public static class HelpCommand extends TvnLangTool{
+               @Inject
+           public Help help;
+
+           @Override
+           public void execute(){
+               help.call();
+           }
+       }
+       
+       //Command for convert workflows
+       @Command(name="convert", description="Convert the given workflow")
+       public static class CommandConvert extends TvnLangTool{
+               @Inject
+               Optional optional = new Optional();
+               
+               @Inject
+               Filetypes filetypes = new Filetypes();
+               
+               @Arguments(usage = "<output format> <input files> ", 
description = "List of files to be converted.\n "
+                               + "Give the list of files to be converted 
without -i/-o and the converted files will be saved in to /converted folder in 
the same dir")
+        public final List<String> files = Lists.newArrayList();
+               
+               //When this is true, the command will run recursively in a 
directory.
+               @Option(name={"-r", "--recursive"}, description="Execute the 
command recursively")
+               public boolean recurse = false;
+               
+               //Option for validate the given workflow when converting
+               @Option(name = {"-V", "--validate"}, description="Validate the 
workflow before convert")
+               public boolean validate = false;
+               
+               @Override
+               public void execute(){
+//                     
+//                     if(Filetypes.isWfbundel){
+//                             if(!files.isEmpty() && 
optional.getInFile()!=null){
+//                                     System.err.println("Unexpected 
arguments:"+" " + files.toString() + " "+ optional.getInFile());
+//                                     return;
+//                             }
+//                             File dir = new File(Optional.getInFile());
+//                             File odir = new File(Optional.getOutFile());
+//                             if(!odir.exists()){
+//                                     odir.mkdirs();
+//                             }
+//                             for(File f : dir.listFiles()){
+////                                   (new ToWfbundel(f.toString(), 
odir.toString())).run();
+////                                   System.out.println(f);
+//                                     
+//                             }
+//                                     
+//                     }
+                       
+                       
+                       
+               }
+               
+       }
+       
+       //Version command
+       @Command(name="version", description = "Show version informantion")
+       public static class CommandVersion extends TvnLangTool{
+
+               @Override
+               public void execute() {
+                       // TODO Auto-generated method stub
+                       
+               }
+               
+       }
+       
+       //Command for inspection of workflows....!!
+       @Command(name="inspect", description="Inspect the given workflow")
+       public static class CommandInspect extends TvnLangTool{
+
+               @Inject
+               Optional optional = new Optional();
+               
+               @Option(name={"-l", "--log"}, description = "Save a results to 
a file")
+               public String log_file;
+               
+               @Override
+               public void execute() {
+                       // TODO Auto-generated method stub
+                       
+               }
+               
+       }
+       
+       //Command for validation
+       @Command(name = "validate", description = "validate the given workflow")
+       public static class CommandValidate extends TvnLangTool{
+
+               @Inject
+               Optional optional = new Optional();
+               
+               @Option(name={"-l", "--log"}, description = "Save a results to 
a file")
+               public String log_file;
+               
+               @Override
+               public void execute() {
+                       // TODO Auto-generated method stub
+                       
+               }
+               
+       }
+       
+       
+}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/8e93a3f8/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/TavernaCommandline.java
----------------------------------------------------------------------
diff --git 
a/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/TavernaCommandline.java
 
b/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/TavernaCommandline.java
new file mode 100644
index 0000000..f7b998e
--- /dev/null
+++ 
b/taverna-language-commandline/src/main/java/org/apache/taverna/commandline/TavernaCommandline.java
@@ -0,0 +1,29 @@
+package org.apache.taverna.commandline;
+
+/*
+ * 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.
+ */
+
+public class TavernaCommandline {
+
+       public static void main(String args[]){
+               CommandLineTool tool = new CommandLineTool();
+               tool.parse(args);
+               
+       }
+}

Reply via email to