2 File is ParseParameter class which is used to parse the validity of user's input args
5 Copyright (c) 2006, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 package org
.tianocore
.context
;
16 public class ParseParameter
{
20 * check the validity of user's input args
21 * @param args -- user's input
22 * @return true or false
24 public static boolean checkParameter(String
[] args
) {
27 TargetFile
.readFile();
31 if( (args
[0].compareToIgnoreCase("-h") == 0) || (args
[0].compareToIgnoreCase("/h") == 0) ||
32 (args
[0].compareToIgnoreCase("-?") == 0) || (args
[0].compareToIgnoreCase("/?") == 0) ||
33 (args
[0].compareToIgnoreCase("-help") == 0) || (args
[0].compareToIgnoreCase("/help") == 0) ){
34 HelpInfo
.outputUsageInfo();
37 if( args
[0].charAt(0) != '-' ){
38 System
.out
.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo.");
41 for(int i
=0; i
<args
.length
; i
++){
42 if( (args
[i
].startsWith("-") &&
43 ((args
[i
].compareTo("-a") != 0) && (args
[i
].compareTo("-c") != 0) &&
44 (args
[i
].compareTo("-n") != 0) && (args
[i
].compareTo("-p") != 0) &&
45 (args
[i
].compareTo("-t") != 0) && (args
[i
].compareTo("-m") != 0)))){
46 System
.out
.printf("%s\n", "Error arguments! Please type \"ContextTool -h\" for helpinfo.");
56 * standardize user's input args
57 * @param args -- user's input
58 * @return no return value
60 public static int standardizeParameter(String
[] args
) {
63 StringBuffer InputData
= new StringBuffer();
64 for (int i
= 0; i
< args
.length
; i
++) {
65 InputData
.append(args
[i
]);
66 InputData
.append(" ");
70 while (i
< InputData
.length()) {
71 int j
= InputData
.indexOf("-", i
+ 1);
73 j
= InputData
.length();
75 String argstr
= InputData
.substring(i
, j
);
77 if (argstr
.charAt(1) == 'p') {
79 // argstr is "-p ", display current setting
81 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
82 System
.out
.printf("%s\n", curpstr
);
86 //argstr is "-p ?", display possible setting
88 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
89 System
.out
.printf( "%s\n", "assign the platform FPD file's relative path to WORKSPACE" );
93 //argstr is "-p 0", clean current setting
95 if(argstr
.length() < 6 && argstr
.charAt(3) == '0'){
99 curpstr
= mergeSetting(curpstr
, argstr
);
100 } else if (argstr
.charAt(1) == 't') {
101 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
102 System
.out
.printf("%s\n", curtstr
);
105 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
106 System
.out
.printf( "%s\n", "What kind of the version is the binary target, such as DEBUG, RELEASE" );
109 if(argstr
.length() < 6 && argstr
.charAt(3) == '0'){
113 curtstr
= mergeSetting(curtstr
, argstr
);
114 } else if (argstr
.charAt(1) == 'a') {
115 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
116 System
.out
.printf("%s\n", curastr
);
119 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
120 System
.out
.printf( "%s\n", "What kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM" );
123 if(argstr
.length() < 6 && argstr
.charAt(3) == '0'){
127 curastr
= mergeSetting(curastr
, argstr
);
128 } else if (argstr
.charAt(1) == 'c') {
129 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
130 System
.out
.printf("%s\n", curcstr
);
133 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
134 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/" );
137 if(argstr
.length() < 6 && argstr
.charAt(3) == '0'){
141 curcstr
= mergeSetting(curcstr
, argstr
);
142 } else if (argstr
.charAt(1) == 'n') {
143 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
144 System
.out
.printf("%s\n", curnstr
);
147 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
148 System
.out
.printf( "%s\n", "Specify the TagName, such as GCC, MSFT" );
151 if(argstr
.length() < 6 && argstr
.charAt(3) == '0'){
155 curnstr
= mergeSetting(curnstr
, argstr
);
156 } else if (argstr
.charAt(1) == 'm') {
157 if(argstr
.length() < 4 && argstr
.charAt(2) == ' '){
158 System
.out
.printf("%s\n", curmstr
);
161 if(argstr
.length() < 6 && argstr
.charAt(3) == '?'){
162 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." );
165 mstr
+= argstr
.substring(2);
167 if (argstr
.charAt(3) == '0'){
180 public static String
mergeSetting( String S1
, String S2
){
182 String
[] S
= S2
.split(" ");
184 S1
= tstr
.concat(S2
.substring(2));
186 for(int i
= 1; i
< S
.length
; i
++){
187 if( S1
.contains(S
[i
]) == false ){
188 S1
= S1
.concat(S
[i
]).concat(" ");
196 public static boolean outputCurSetting(){
198 System
.out
.printf( "%s\n", "The current setting is:" );
199 System
.out
.printf( "%s\n", curpstr
);
200 System
.out
.printf( "%s\n", curtstr
);
201 System
.out
.printf( "%s\n", curastr
);
202 System
.out
.printf( "%s\n", curcstr
);
203 System
.out
.printf( "%s\n", curnstr
);
204 System
.out
.printf( "%s\n", curmstr
);
205 System
.out
.printf( "%s\n", curmestr
);
210 public static int length
= 0;
211 public static String pstr
= new String("ACTIVE_PLATFORM = ");
212 public static String tstr
= new String("TARGET = ");
213 public static String astr
= new String("TARGET_ARCH = ");
214 public static String cstr
= new String("TOOL_CHAIN_CONF = ");
215 public static String nstr
= new String("TOOL_CHAIN_TAG = ");
216 public static String mstr
= new String("MAX_CONCURRENT_THREAD_NUMBER = ");
217 public static String mestr
= new String("MULTIPLE_THREAD = ");
219 public static String curpstr
= null;
220 public static String curtstr
= null;
221 public static String curastr
= null;
222 public static String curcstr
= null;
223 public static String curnstr
= null;
224 public static String curmstr
= null;
225 public static String curmestr
= null;
227 public static int plength
= 0;
228 public static int tlength
= 0;
229 public static int alength
= 0;
230 public static int clength
= 0;
231 public static int nlength
= 0;
232 public static int mlength
= 0;
233 public static int melength
= 0;