]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - Tools/Java/Source/ContextTool/org/tianocore/context/ParseParameter.java
fix the bug in revision 1746
[mirror_edk2.git] / Tools / Java / Source / ContextTool / org / tianocore / context / ParseParameter.java
... / ...
CommitLineData
1/** @file\r
2 File is ParseParameter class which is used to parse the validity of user's input args\r
3 and standardize them. \r
4 \r
5Copyright (c) 2006, Intel Corporation\r
6All rights reserved. This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10 \r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13**/\r
14package org.tianocore.context;\r
15\r
16public class ParseParameter {\r
17\r
18 \r
19 /** \r
20 * check the validity of user's input args\r
21 * @param args -- user's input\r
22 * @return true or false\r
23 **/\r
24 public static boolean checkParameter(String[] args) {\r
25 \r
26 if(args.length == 0){\r
27 TargetFile.readFile();\r
28 outputCurSetting();\r
29 return false;\r
30 } else {\r
31 if( (args[0].compareToIgnoreCase("-h") == 0) || (args[0].compareToIgnoreCase("/h") == 0) || \r
32 (args[0].compareToIgnoreCase("-?") == 0) || (args[0].compareToIgnoreCase("/?") == 0) || \r
33 (args[0].compareToIgnoreCase("-help") == 0) || (args[0].compareToIgnoreCase("/help") == 0) ){\r
34 HelpInfo.outputUsageInfo();\r
35 return false;\r
36 }\r
37 if( args[0].charAt(0) != '-' ){\r
38 System.out.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo.");\r
39 return false;\r
40 }\r
41 for(int i=0; i<args.length; i++){\r
42 if( (args[i].startsWith("-") && \r
43 ((args[i].compareTo("-a") != 0) && (args[i].compareTo("-c") != 0) && \r
44 (args[i].compareTo("-n") != 0) && (args[i].compareTo("-p") != 0) && \r
45 (args[i].compareTo("-t") != 0) && (args[i].compareTo("-m") != 0)))){\r
46 System.out.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo."); \r
47 return false;\r
48 }\r
49 }\r
50 }\r
51 \r
52 return true; \r
53 }\r
54 \r
55 /** \r
56 * standardize user's input args\r
57 * @param args -- user's input\r
58 * @return no return value\r
59 **/\r
60 public static int standardizeParameter(String[] args) {\r
61 \r
62 \r
63 StringBuffer InputData = new StringBuffer();\r
64 for (int i = 0; i < args.length; i++) {\r
65 InputData.append(args[i]);\r
66 InputData.append(" ");\r
67 }\r
68\r
69 int i = 0;\r
70 while (i < InputData.length()) {\r
71 int j = InputData.indexOf("-", i + 1);\r
72 if (j == -1)\r
73 j = InputData.length();\r
74\r
75 String argstr = InputData.substring(i, j);\r
76 i = j;\r
77 if (argstr.charAt(1) == 'p') {\r
78 //\r
79 // argstr is "-p ", display current setting\r
80 //\r
81 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
82 System.out.printf("%s\n", curpstr);\r
83 return 1;\r
84 }\r
85 //\r
86 //argstr is "-p ?", display possible setting\r
87 //\r
88 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
89 System.out.printf( "%s\n", "assign the platform FPD file's relative path to WORKSPACE" );\r
90 return 2;\r
91 }\r
92 //\r
93 //argstr is "-p 0", clean current setting\r
94 //\r
95 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
96 curpstr = pstr;\r
97 npflag = true;\r
98 continue;\r
99 }\r
100 if(curpstr == null){\r
101 curpstr = pstr.concat(argstr.substring(2));\r
102 }else{\r
103 curpstr = mergeSetting(curpstr, argstr);\r
104 }\r
105 npflag = true;\r
106 } else if (argstr.charAt(1) == 't') {\r
107 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
108 System.out.printf("%s\n", curtstr);\r
109 return 1;\r
110 }\r
111 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
112 System.out.printf( "%s\n", "What kind of the version is the binary target, such as DEBUG, RELEASE" );\r
113 return 2;\r
114 }\r
115 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
116 curtstr = tstr;\r
117 ntflag = true;\r
118 continue;\r
119 }\r
120 if(curtstr == null){\r
121 curtstr = tstr.concat(argstr.substring(2));\r
122 }else{\r
123 curtstr = mergeSetting(curtstr, argstr);\r
124 }\r
125 ntflag = true;\r
126 } else if (argstr.charAt(1) == 'a') {\r
127 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
128 System.out.printf("%s\n", curastr);\r
129 return 1;\r
130 }\r
131 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
132 System.out.printf( "%s\n", "What kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM" );\r
133 return 2;\r
134 }\r
135 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
136 curastr = astr;\r
137 naflag = true;\r
138 continue;\r
139 }\r
140 if(curastr == null){\r
141 curastr = astr.concat(argstr.substring(2));\r
142 }else{\r
143 curastr = mergeSetting(curastr, argstr);\r
144 }\r
145 naflag = true;\r
146 } else if (argstr.charAt(1) == 'c') {\r
147 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
148 System.out.printf("%s\n", curcstr);\r
149 return 1;\r
150 }\r
151 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
152 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
153 return 2;\r
154 }\r
155 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
156 curcstr = cstr;\r
157 ncflag = true;\r
158 continue;\r
159 }\r
160 if(curcstr == null){\r
161 curcstr = pstr.concat(argstr.substring(2));\r
162 }else{\r
163 curcstr = mergeSetting(curcstr, argstr);\r
164 }\r
165 ncflag = true;\r
166 } else if (argstr.charAt(1) == 'n') {\r
167 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
168 System.out.printf("%s\n", curnstr);\r
169 return 1;\r
170 }\r
171 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
172 System.out.printf( "%s\n", "Specify the TagName, such as GCC, MSFT" );\r
173 return 2;\r
174 }\r
175 if(argstr.length() < 6 && argstr.charAt(3) == '0'){\r
176 curnstr = nstr;\r
177 nnflag = true;\r
178 continue;\r
179 }\r
180 if(curnstr == null){\r
181 curnstr = nstr.concat(argstr.substring(2));\r
182 }else{\r
183 curnstr = mergeSetting(curnstr, argstr);\r
184 }\r
185 nnflag = true;\r
186 } else if (argstr.charAt(1) == 'm') {\r
187 if(argstr.length() < 4 && argstr.charAt(2) == ' '){\r
188 System.out.printf("%s\n", curmstr);\r
189 return 1;\r
190 }\r
191 if(argstr.length() < 6 && argstr.charAt(3) == '?'){\r
192 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
193 return 2;\r
194 }\r
195 mstr += argstr.substring(2);\r
196 curmstr = mstr;\r
197 nmflag = true;\r
198 if (argstr.charAt(3) == '0'){\r
199 mestr += " Disable";\r
200 } else {\r
201 mestr += " Enable";\r
202 }\r
203 curmestr = mestr;\r
204 nmeflag = true;\r
205 }\r
206 \r
207 }\r
208 return 0;\r
209 }\r
210 \r
211 \r
212 public static String mergeSetting( String S1, String S2){\r
213 \r
214 String[] S = S2.split(" ");\r
215\r
216 for(int i = 1; i < S.length; i++){\r
217 if(S1.contains(S[i]) == false){\r
218 S1 = S1.concat(" ").concat(S[i]);\r
219 }\r
220 }\r
221 \r
222 return S1;\r
223 }\r
224 \r
225 public static boolean outputCurSetting(){\r
226 \r
227 System.out.printf( "%s\n", "The current setting is:" );\r
228 System.out.printf( "%s\n", curpstr );\r
229 System.out.printf( "%s\n", curtstr );\r
230 System.out.printf( "%s\n", curastr );\r
231 System.out.printf( "%s\n", curcstr );\r
232 System.out.printf( "%s\n", curnstr );\r
233 System.out.printf( "%s\n", curmstr );\r
234 System.out.printf( "%s\n", curmestr );\r
235 \r
236 return true;\r
237 }\r
238 \r
239 public static int length = 0;\r
240 public static String pstr = new String("ACTIVE_PLATFORM = ");\r
241 public static String tstr = new String("TARGET = ");\r
242 public static String astr = new String("TARGET_ARCH = ");\r
243 public static String cstr = new String("TOOL_CHAIN_CONF = ");\r
244 public static String nstr = new String("TOOL_CHAIN_TAG = ");\r
245 public static String mstr = new String("MAX_CONCURRENT_THREAD_NUMBER = ");\r
246 public static String mestr = new String("MULTIPLE_THREAD = ");\r
247 \r
248 public static String curpstr = null;\r
249 public static String curtstr = null;\r
250 public static String curastr = null;\r
251 public static String curcstr = null;\r
252 public static String curnstr = null;\r
253 public static String curmstr = null;\r
254 public static String curmestr = null;\r
255 \r
256 public static int plength = 0;\r
257 public static int tlength = 0;\r
258 public static int alength = 0;\r
259 public static int clength = 0;\r
260 public static int nlength = 0;\r
261 public static int mlength = 0;\r
262 public static int melength = 0;\r
263 \r
264 public static boolean npflag = false;\r
265 public static boolean ntflag = false;\r
266 public static boolean naflag = false;\r
267 public static boolean ncflag = false;\r
268 public static boolean nnflag = false;\r
269 public static boolean nmflag = false;\r
270 public static boolean nmeflag = false;\r
271\r
272}\r