2 File is HelpInfo class which is used to output the usage info.
4 Copyright (c) 2006, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 package org
.tianocore
.context
;
16 public class HelpInfo
{
20 * output the tools usage guide
21 * @param no input parameter
22 * @return no return value
24 public static void outputUsageInfo() {
25 System
.out
.printf("\n%s", UsageInfoString
);
26 System
.out
.printf("\n%s", DetailOfOptionString
);
28 for (int i
= 0; i
< 6; i
++) {
29 outputSubUsageInfo(UsageString
[i
], UsageStringInfo
[i
]);
32 System
.out
.printf("\n%s", ExampleString
);
36 * output the usage info which bases on cmd option
37 * @param String str1 : the cmd option
38 * String str2 : the detail of cmd option
39 * @return no return value
41 private static void outputSubUsageInfo(String str1
, String str2
) {
44 System
.out
.printf("\n%4s %-30s %s", "", str1
, substr
[0]);
45 for (int i
= 1; i
< substrnum
; i
++) {
46 if (substr
[i
] != null)
47 System
.out
.printf("\n%4s %-30s %s", "", "", substr
[i
]);
51 System
.out
.printf("\n%4s %-30s %s", "", str1
, str2
);
56 * according to the output width, split the detail info
57 * @param String str :the detail info
58 * @return no return value
60 private static void splitString(String str
) {
61 int strlength
= str
.length();
62 if (strlength
> MaxSrtingLength
) {
64 //we should modify the array to list, for it is strange to + 2
65 substrnum
= strlength
/ MaxSrtingLength
+ 2;
66 String
[] tokens
= str
.split("[ ]", 0);
67 substr
= new String
[substrnum
];
72 for (int i
= 0; i
< tokens
.length
; i
++) {
73 if ((templength
= end
+ tokens
[i
].length() + 1) < (MaxSrtingLength
+ start
)) {
76 substr
[j
++] = str
.substring(start
, end
);
81 substr
[j
] = str
.substring(start
, end
- 1);
85 private static String
[] substr
= null;
87 private static int substrnum
= 0;
89 private static final int MaxSrtingLength
= 40;
91 private static final String UsageInfoString
= "Usage: ContextTool [-option1] [args] [-option2] [args] ...";
93 private static final String DetailOfOptionString
= "Where options include:";
95 private static final String ExampleString
= "Example: ContextTool -a IA32 IA64 EBC -c Tools/Conf/tools_def.txt -t DEBUG";
97 private static final String HString
= "-h";
99 private static final String HStringInfo
= "print this help message";
101 private static final String AString
= "-a <list of Arch>";
103 private static final String AStringInfo
= "what kind of architechure is the binary target, such as IA32, IA64, X64, EBC, or ARM. Multiple values can be specified on a single line, using space to separate the values.";
105 private static final String CString
= "-c <tool_definition_file.txt>";
107 private static final String CStringInfo
= "Assign a txt file, which specify the tools to use for the build and must be located in the path: WORKSPACE/Tools/Conf/. If no file is specified, the default filename is \"tools_def.txt\"";
109 private static final String NString
= "-n <list of TagNames>";
111 private static final String NStringInfo
= "Specify the TagName, such as GCC, MSFT, which are defined in the \"tool_definition_file.txt\"";
113 private static final String PString
= "-p <*.fpd>";
115 private static final String PStringInfo
= "Specify the WORKSPACE relative Path and Filename of platform FPD file that will be used for the build.";
117 private static final String TString
= "-t <list of Build Targets>";
119 private static final String TStringInfo
= "What kind of the version is the binary target, such as DEBUG, RELEASE. Multiple values can be specified on a single line, using space to separate the values.";
121 private static final String
[] UsageString
= { HString
, AString
, CString
,
122 NString
, PString
, TString
};
124 private static final String
[] UsageStringInfo
= { HStringInfo
, AStringInfo
,
125 CStringInfo
, NStringInfo
, PStringInfo
, TStringInfo
};