]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/ContextTool/org/tianocore/context/ParseParameter.java
Output more descriptive information when there's no TARGET, TARGET_ARCH, etc defined...
[mirror_edk2.git] / Tools / Java / Source / ContextTool / org / tianocore / context / ParseParameter.java
index 8f1c8b2f779a666e611532311d9557a99837b97d..4d9c6de3a07c1f014f451f325e288a7b2e150793 100644 (file)
@@ -29,13 +29,12 @@ public class ParseParameter {
             return false;\r
         } else {\r
             if( (args[0].compareToIgnoreCase("-h") == 0) || (args[0].compareToIgnoreCase("/h") == 0) || \r
-                (args[0].compareToIgnoreCase("-?") == 0) || (args[0].compareToIgnoreCase("/?") == 0) || \r
-                (args[0].compareToIgnoreCase("-help") == 0) || (args[0].compareToIgnoreCase("/help") == 0) ){\r
+                (args[0].compareToIgnoreCase("--help") == 0) || (args[0].compareToIgnoreCase("/help") == 0) ){\r
                 HelpInfo.outputUsageInfo();\r
                 return false;\r
             }\r
             if( args[0].charAt(0) != '-' ){\r
-                System.out.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo.");\r
+                System.out.printf("%s\n", "Error Parameters! Please type \"ContextTool -h\" for helpinfo.");\r
                 return false;\r
             }\r
             for(int i=0; i<args.length; i++){\r
@@ -43,7 +42,7 @@ public class ParseParameter {
                     ((args[i].compareTo("-a") != 0) && (args[i].compareTo("-c") != 0) && \r
                     (args[i].compareTo("-n") != 0) && (args[i].compareTo("-p") != 0) && \r
                     (args[i].compareTo("-t") != 0) && (args[i].compareTo("-m") != 0)))){\r
-                    System.out.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo.");                                                                                                                                                            \r
+                    System.out.printf("%s\n", "Error Parameters! Please type \"ContextTool -h\" for helpinfo.");                                                                                                                                                            \r
                     return false;\r
                 }\r
             }\r
@@ -79,37 +78,47 @@ public class ParseParameter {
                 // argstr is "-p ", display current setting\r
                 //\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curpstr);\r
+                    if (curpstr != null) {\r
+                        System.out.printf("%s\n", curpstr);\r
+                    } else {\r
+                        System.out.printf("No ACTIVE_PLATFORM defined \n");\r
+                    }\r
                     return 1;\r
                 }\r
                 //\r
-                //argstr is "-p ?", display possible setting\r
+                //argstr is "-p ? ", display possible setting\r
                 //\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
-                    System.out.printf( "%s\n", "assign the platform FPD file's relative path to WORKSPACE" );\r
+                    String workspacePath = System.getenv("WORKSPACE");\r
+                    System.out.printf( "%s\n", "Assign a platform FPD file with relative path to " + workspacePath);\r
                     return 2;\r
                 }\r
                 //\r
-                //argstr is "-p 0", clean current setting\r
+                //argstr is "-p 0 ", clean current setting\r
                 //\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
                     curpstr = pstr;\r
                     npflag = true;\r
                     continue;\r
                 }\r
-                if(curpstr == null){\r
-                    curpstr = pstr.concat(argstr.substring(2));\r
-                }else{\r
-                    curpstr = mergeSetting(curpstr, argstr);\r
+                String[] S = argstr.split(" ");\r
+                if(S.length > 2){\r
+                    System.out.printf( "%s\n", "There should be none or only one ACTIVE_PLATFORM. Please check the number of value which follow \"-p\".");\r
+                    return 3;\r
                 }\r
+                curpstr = pstr.concat(argstr.substring(2));\r
                 npflag = true;\r
             } else if (argstr.charAt(1) == 't') {\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curtstr);\r
+                    if (curtstr != null) {\r
+                        System.out.printf("%s\n", curtstr);\r
+                    } else {\r
+                        System.out.printf("No TARGET defined\n");\r
+                    }\r
                     return 1;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
-                    System.out.printf( "%s\n", "What kind of the version is the binary target, such as DEBUG, RELEASE" );\r
+                    System.out.printf( "%s\n", "What kind of the version is the binary target, such as DEBUG, RELEASE." );\r
                     return 2;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
@@ -117,19 +126,19 @@ public class ParseParameter {
                     ntflag = true;\r
                     continue;\r
                 }\r
-                if(curtstr == null){\r
-                    curtstr = tstr.concat(argstr.substring(2));\r
-                }else{\r
-                    curtstr = mergeSetting(curtstr, argstr);\r
-                }\r
+                curtstr = tstr.concat(argstr.substring(2));\r
                 ntflag = true;\r
             } else if (argstr.charAt(1) == 'a') {\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curastr);\r
+                    if (curastr != null) {\r
+                        System.out.printf("%s\n", curastr);\r
+                    } else {\r
+                        System.out.printf("No TARGET_ARCH defined\n");\r
+                    }\r
                     return 1;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
-                    System.out.printf( "%s\n", "What kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM" );\r
+                    System.out.printf( "%s\n", "What kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM." );\r
                     return 2;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
@@ -137,19 +146,20 @@ public class ParseParameter {
                     naflag = true;\r
                     continue;\r
                 }\r
-                if(curastr == null){\r
-                    curastr = astr.concat(argstr.substring(2));\r
-                }else{\r
-                    curastr = mergeSetting(curastr, argstr);\r
-                }\r
+                curastr = astr.concat(argstr.substring(2));\r
                 naflag = true;\r
             } else if (argstr.charAt(1) == 'c') {\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curcstr);\r
+                    if (curcstr != null) {\r
+                        System.out.printf("%s\n", curcstr);\r
+                    } else {\r
+                        System.out.printf("No TOOL_CHAIN_CONF defined\n");\r
+                    }\r
                     return 1;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
-                    System.out.printf( "%s\n", "Assign a txt file with the relative path to WORKSPACE, which specify the tools to use for the build and must be located in the path: WORKSPACE/Tools/Conf/" );\r
+                    String workspacePath = System.getenv("WORKSPACE");\r
+                    System.out.printf( "%s\n", "Assign a txt file with relative path to " + workspacePath + ", which specify the tools to use for the build and must be located in the path:" + workspacePath + "\\Tools\\Conf" );\r
                     return 2;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
@@ -157,19 +167,24 @@ public class ParseParameter {
                     ncflag = true;\r
                     continue;\r
                 }\r
-                if(curcstr == null){\r
-                    curcstr = pstr.concat(argstr.substring(2));\r
-                }else{\r
-                    curcstr = mergeSetting(curcstr, argstr);\r
+                String[] S = argstr.split(" ");\r
+                if(S.length > 2){\r
+                    System.out.printf( "%s\n", "There should be one and only one TOOL_CHAIN_CONF. Please check the number of value which follow \"-c\".");\r
+                    return 3;\r
                 }\r
+                curcstr = cstr.concat(argstr.substring(2));\r
                 ncflag = true;\r
             } else if (argstr.charAt(1) == 'n') {\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curnstr);\r
+                    if (curnstr != null) {\r
+                        System.out.printf("%s\n", curnstr);\r
+                    } else {\r
+                        System.out.printf("No TOOL_CHAIN_TAG defined\n");\r
+                    }\r
                     return 1;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
-                    System.out.printf( "%s\n", "Specify the TagName, such as GCC, MSFT" );\r
+                    System.out.printf( "%s\n", "Specify the TagName, such as GCC, MSFT." );\r
                     return 2;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
@@ -177,21 +192,26 @@ public class ParseParameter {
                     nnflag = true;\r
                     continue;\r
                 }\r
-                if(curnstr == null){\r
-                    curnstr = nstr.concat(argstr.substring(2));\r
-                }else{\r
-                    curnstr = mergeSetting(curnstr, argstr);\r
-                }\r
+                curnstr = nstr.concat(argstr.substring(2));\r
                 nnflag = true;\r
             } else if (argstr.charAt(1) == 'm') {\r
                 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
-                    System.out.printf("%s\n", curmstr);\r
+                    if (curmstr != null) {\r
+                        System.out.printf("%s\n", curmstr);\r
+                    } else {\r
+                        System.out.printf("No MAX_CONCURRENT_THREAD_NUMBER defined\n");\r
+                    }\r
                     return 1;\r
                 }\r
                 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
                     System.out.printf( "%s\n", "The number of concurrent threads. Default is 2. Recommend to set this value to one more than the number of your compurter cores or CPUs." );\r
                     return 2;\r
                 }\r
+                String[] S = argstr.split(" ");\r
+                if(S.length > 2){\r
+                    System.out.printf( "%s\n", "There should be one and only one integer, which doesn't include space.");\r
+                    return 3;\r
+                }\r
                 mstr += argstr.substring(2);\r
                 curmstr = mstr;\r
                 nmflag = true;\r
@@ -207,36 +227,28 @@ public class ParseParameter {
         }\r
         return 0;\r
     }\r
-    \r
-    \r
-    public static String mergeSetting( String S1, String S2){\r
-        \r
-        String[] S = S2.split(" ");\r
 \r
-        for(int i = 1; i < S.length; i++){\r
-            if(S1.contains(S[i]) == false){\r
-                S1 = S1.concat(" ").concat(S[i]);\r
-            }\r
-        }\r
-        \r
-        return S1;\r
-    }\r
     \r
     public static boolean outputCurSetting(){\r
         \r
         System.out.printf( "%s\n", "The current setting is:" );\r
-        System.out.printf( "%s\n", curpstr );\r
-        System.out.printf( "%s\n", curtstr );\r
-        System.out.printf( "%s\n", curastr );\r
-        System.out.printf( "%s\n", curcstr );\r
-        System.out.printf( "%s\n", curnstr );\r
-        System.out.printf( "%s\n", curmstr );\r
-        System.out.printf( "%s\n", curmestr );\r
+        String[] A = { pstr, tstr, astr, cstr, nstr, mstr, mestr };\r
+        String[] B = { curpstr, curtstr, curastr, curcstr, curnstr, curmstr, curmestr };\r
+        \r
+        for(int i=0; i<A.length; i++){\r
+            if(B[i] != null){\r
+                System.out.printf( "%s\n", B[i] );\r
+            }\r
+            else{\r
+                System.out.printf( "%s\n", A[i] );\r
+            }\r
+            \r
+        }\r
         \r
         return true;\r
     }\r
-     \r
-    public static int length  = 0;\r
+\r
+    \r
     public static String pstr = new String("ACTIVE_PLATFORM                     = ");\r
     public static String tstr = new String("TARGET                              = ");\r
     public static String astr = new String("TARGET_ARCH                         = ");\r
@@ -253,14 +265,6 @@ public class ParseParameter {
     public static String curmstr = null;\r
     public static String curmestr = null;\r
     \r
-    public static int plength = 0;\r
-    public static int tlength = 0;\r
-    public static int alength = 0;\r
-    public static int clength = 0;\r
-    public static int nlength = 0;\r
-    public static int mlength = 0;\r
-    public static int melength = 0;\r
-    \r
     public static boolean npflag = false;\r
     public static boolean ntflag = false;\r
     public static boolean naflag = false;\r