[Title] Add help detail for web-signing
authorBon-Yong Lee <bonyong.lee@samsung.com>
Wed, 5 Sep 2012 06:42:52 +0000 (15:42 +0900)
committerBon-Yong Lee <bonyong.lee@samsung.com>
Wed, 5 Sep 2012 06:42:52 +0000 (15:42 +0900)
[Type]      Enhancement
[Module]    Sub
[Priority]  Minor
[CQ#]       // CQ Issue Number
[Redmine#]  // Redmine Isuue Number
[Problem]   // Problem Description
[Cause]     // Cause Description
[Solution]  // Solution Description
[TestCase]  // Executed the test-target (How to)

org.tizen.cli/doc/install/bin_/web-signing
org.tizen.cli/doc/install/conf/profiles.xml [new file with mode: 0755]
org.tizen.cli/doc/install/sample/profiles.xml
org.tizen.cli/doc/install/sample/samsung.devmode.sdk.cert.p12 [new file with mode: 0644]
org.tizen.cli/src/org/tizen/cli/exec/AbstractLauncher.java
org.tizen.cli/src/org/tizen/cli/exec/Help.java
org.tizen.cli/src/org/tizen/cli/exec/sign/Main.java
org.tizen.cli/src/org/tizen/cli/exec/sign/profile.help

index 0563925..2259bb4 100755 (executable)
@@ -31,6 +31,7 @@ CLASSPATH=$DIR_CONFIG:$JAR
 
 OPT_LOGGING="-Dlog4j.configuration=log4j.xml"
 OPT_PRG_NAME="-Dcli.name=$SCRIPT"
+OPT_CLI_HOME="-Dcli.home=$DIR_HOME"
 
 READ_ARG="n"
 
@@ -53,7 +54,7 @@ for WORD in $@; do
         esac
 done
 
-OPT="$OPT_TRACE $OPT_LOGGING $OPT_PRG_NAME"
+OPT="$OPT_TRACE $OPT_LOGGING $OPT_PRG_NAME $OPT_CLI_HOME"
 
 EXEC="java -cp $CLASSPATH $OPT $MAIN $@"
 
diff --git a/org.tizen.cli/doc/install/conf/profiles.xml b/org.tizen.cli/doc/install/conf/profiles.xml
new file mode 100755 (executable)
index 0000000..032ea3d
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles>
+       <profile name="develop">
+       </profile>
+</profiles>
index 7d352b7..82d93fe 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <profiles>
        <profile name="test">
-               <profileitem author="true" identifier="%a:%f:%w:%h:%t" key="/home/bylee/dev/cli/sample/samsung.devmode.sdk.cert.p12"/>
-               <profileitem author="false" identifier="%a:%f:%w:%h:%t" key="/home/bylee/dev/cli/sample/samsung.devmode.sdk.cert.p12"/>
+               <profileitem author="true" identifier="%a:%f:%w:%h:%t" key="/home/tizen/cli/sample/samsung.devmode.sdk.cert.p12"/>
+               <profileitem author="false" identifier="%a:%f:%w:%h:%t" key="/home/tizen/cli/sample/samsung.devmode.sdk.cert.p12"/>
        </profile>
 </profiles>
diff --git a/org.tizen.cli/doc/install/sample/samsung.devmode.sdk.cert.p12 b/org.tizen.cli/doc/install/sample/samsung.devmode.sdk.cert.p12
new file mode 100644 (file)
index 0000000..8302b60
Binary files /dev/null and b/org.tizen.cli/doc/install/sample/samsung.devmode.sdk.cert.p12 differ
index d8fa49f..8562c6d 100755 (executable)
@@ -30,6 +30,7 @@ import java.io.OutputStream;
 import java.io.PrintStream;
 import java.net.URL;
 import java.nio.charset.Charset;
+import java.util.Arrays;
 import java.util.Enumeration;
 import java.util.Properties;
 
@@ -49,6 +50,7 @@ import org.tizen.common.core.command.policy.PolicyRegistry;
 import org.tizen.common.file.FileHandler;
 import org.tizen.common.file.FileHandler.Attribute;
 import org.tizen.common.file.StandardFileHandler;
+import org.tizen.common.util.CollectionUtil;
 import org.tizen.common.util.IOUtil;
 import org.tizen.common.util.MapUtil;
 import org.tizen.common.util.PropertyUtil;
@@ -231,13 +233,17 @@ AbstractLauncher
                this.help = new Help( getOptions() );
                final ClassLoader cl = getClass().getClassLoader();
                final String resourceName = getClass().getName().replace( '.', '/' ) + SUFFIX_CONFIG;
+               
+               logger.trace( "Resource name :{}", resourceName );
                try
             {
                 final Enumeration<URL> iter = cl.getResources( resourceName );
                 while ( iter.hasMoreElements() )
                 {
                     final URL url = iter.nextElement();
+                    logger.trace( "URL :{}", url );
                     final Properties properties = PropertyUtil.loadProperties( url.openStream() );
+                    logger.debug( "Properties :{}", properties );
                     
                     for ( final Object key : properties.keySet() )
                     {
@@ -265,7 +271,9 @@ AbstractLauncher
        String
        printHelpDetail( String option )
        {
-           return getHelp().getHelpDetail( option );
+           final String detailStr = getHelp().getHelpDetail( option );
+           getPrompter().error( detailStr );
+           return detailStr;
        }
        
        /**
@@ -277,7 +285,7 @@ AbstractLauncher
        String
        printHelp()
        {
-           String helpStr = getHelp().getHelp();
+           final String helpStr = getHelp().getHelp();
                getPrompter().error( helpStr );
                return helpStr;
        }
@@ -302,9 +310,9 @@ AbstractLauncher
                if ( logger.isTraceEnabled() )
                {
                        logger.trace( "System properties :\n{}", MapUtil.toString( System.getProperties() ) );
+                       logger.trace( "Args :{}", CollectionUtil.concatenate( Arrays.asList( args ), "," ) );
                }
                
-               
                try
                {
                        this.cmd = parse( args );
@@ -324,6 +332,8 @@ AbstractLauncher
                        {
                                printHelp();
                                
+                               logger.debug( "Help argument :{}", cmd.getArgList() );
+                               
                                for ( String keyword : cmd.getArgs() )
                                {
                                    printHelpDetail( keyword );
@@ -335,7 +345,15 @@ AbstractLauncher
                }
                catch ( final ParseException e )
                {
+                   logger.trace( "Invalid usage" );
                        printHelp();
+                       
+                       logger.debug( "Help argument :{}", cmd.getArgList() );
+                       
+            for ( String keyword : cmd.getArgs() )
+            {
+                printHelpDetail( keyword );
+            }
                }
                catch ( final Exception e )
                {
index 16d5712..f47d309 100755 (executable)
@@ -9,19 +9,43 @@ import java.util.HashMap;
 \r
 import org.apache.commons.cli.HelpFormatter;\r
 import org.apache.commons.cli.Options;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
 \r
 public class Help\r
 {\r
+    \r
+    /**\r
+     * Logger for this instance\r
+     */\r
+    protected Logger logger = LoggerFactory.getLogger( getClass() );\r
+    \r
     /**\r
      * Program name property key\r
      */\r
     protected static final String PROP_PRG = "cli.name";\r
     \r
+    /**\r
+     * {@link Options} for Help print-out\r
+     */\r
     protected final Options opts;\r
     \r
+    /**\r
+     * <p>\r
+     * keyword - help mapping\r
+     * </p>\r
+     */\r
     protected HashMap<String, String> keyword2help = new HashMap<String, String>();\r
     \r
-    public Help( Options opts )\r
+    /**\r
+     * Constructor with {@link Options}\r
+     * \r
+     * @param opts {@link Options}\r
+     */\r
+    public\r
+    Help(\r
+        final Options opts\r
+    )\r
     {\r
         this.opts = opts;\r
     }\r
@@ -38,13 +62,28 @@ public class Help
         return opts;\r
     }\r
     \r
-    public void addHelpDetail( String keyword, String help )\r
+    /**\r
+     * Add <code>help</code> contents for <code>keyword</code>\r
+     * \r
+     * @param keyword keyword\r
+     * @param help contents\r
+     */\r
+    public\r
+    void\r
+    addHelpDetail(\r
+        final String keyword,\r
+        final String help\r
+    )\r
     {\r
         keyword2help.put( keyword.toLowerCase(), help );\r
+        \r
+        logger.info( "Help Detail added for {} :\n{}", keyword, help );\r
     }\r
     \r
     /**\r
-     * return execution command for usage\r
+     * <p>\r
+     * Return execution command for usage\r
+     * </p>\r
      * \r
      * @return execution command\r
      */\r
@@ -54,6 +93,13 @@ public class Help
     }\r
 \r
     \r
+    /**\r
+     * <p>\r
+     * Return default usage\r
+     * </p>\r
+     * \r
+     * @return usage\r
+     */\r
     public String getHelp()\r
     {\r
         final HelpFormatter formatter = new HelpFormatter();\r
@@ -79,8 +125,18 @@ public class Help
         return help;\r
     }\r
     \r
+    /**\r
+     * <p>\r
+     * Return detail help for <code>keyword</code>\r
+     * </p>\r
+     * \r
+     * @param keyword keyword\r
+     * @return detail\r
+     */\r
     public String\r
-    getHelpDetail( final String keyword )\r
+    getHelpDetail(\r
+        final String keyword\r
+    )\r
     {\r
         if ( null == keyword )\r
         {\r
index 1b38000..456d42c 100755 (executable)
@@ -25,7 +25,7 @@
 package org.tizen.cli.exec.sign;
 
 import static org.tizen.common.util.FilenameUtil.addTailingPath;
-import static org.tizen.common.util.StringUtil.nvl;
+import static org.tizen.common.util.ObjectUtil.nvl;
 
 import java.io.IOException;
 import java.text.MessageFormat;
@@ -34,6 +34,7 @@ import java.util.List;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
 import org.tizen.cli.exec.AbstractLauncher;
 import org.tizen.cli.exec.ILaunchOptions;
 import org.tizen.common.core.command.Prompter;
@@ -142,7 +143,7 @@ implements ILaunchOptions
                opts.addOption( OptionBuilder.hasArg().withLongOpt( OPT_INCLUDE ).withDescription( DESC_INCLUDE ).create( OPT_INCLUDE.substring( 0, 1 ) ) );
                opts.addOption( OptionBuilder.hasArg().withLongOpt( OPT_EXCLUDE ).withDescription( DESC_EXCLUDE ).create( OPT_EXCLUDE.substring( 0, 1 ) ) );
                
-               opts.addOption( OptionBuilder.hasArg().isRequired().withLongOpt( OPT_PROFILE ).withDescription( DESC_PROFILE ).create( OPT_PROFILE.substring( 0, 1 ) ) );
+               opts.addOption( OptionBuilder.hasArg().withLongOpt( OPT_PROFILE ).withDescription( DESC_PROFILE ).create( OPT_PROFILE.substring( 0, 1 ) ) );
                
                return opts;
        }
@@ -159,6 +160,14 @@ implements ILaunchOptions
        )
        throws Exception
        {
+
+           String profileName = cmdLine.getOptionValue( OPT_PROFILE );
+           logger.debug( "Profile option :{}", profileName );
+           if ( null == profileName )
+           {
+               throw new ParseException( "profile option is requred" );
+           }
+
                final List<String> args = cmdLine.getArgList();
                logger.trace( "arguments :{}", args );
                
@@ -205,9 +214,6 @@ implements ILaunchOptions
                        }
                }
                
-               String profileName = cmdLine.getOptionValue( OPT_PROFILE );
-               logger.debug( "Profile option :{}", profileName );
-               
                String profilesFilePath = null;
                
                final int index = profileName.indexOf( SEPARATOR_PROFILE );
@@ -258,6 +264,7 @@ implements ILaunchOptions
        String
        getDefaultProfilesFilePath()
     {
+           
         final String cliHome =
         nvl( System.getProperty( PROP_CLI_HOME ), System.getenv( ENV_CLI_HOME ) );
         
index 460a0d3..670b29f 100755 (executable)
@@ -8,6 +8,7 @@ Specify profile( profile name and profiles file path )
 \r
     Ex.)\r
         web-signing -p develop:/home/tizen/profiles.xml\r
+        web-signing -p develop\r
 \r
 * profiles file format\r
     It is xml-formatted file. Its schema( xml schema ) exists in $CLI_HOME/doc/schema/profiles.xsd\r