]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/Merge/src/org/tianocore/Merge/MergeCmd.java
Changed spelling to manifest
[mirror_edk2.git] / Tools / Source / Merge / src / org / tianocore / Merge / MergeCmd.java
CommitLineData
0e771cd3 1// @file\r
2// MergeCmd command-line interface to the classes that combine\r
3// multiple MSA files into a single MSA file.\r
4//\r
5// Copyright (c) 2006, Intel Corporation All rights reserved.\r
6//\r
7// This program and the accompanying materials are licensed and made\r
8// available under the terms and conditions of the BSD License which\r
9// accompanies this distribution. The full text of the license may \r
10// be found at http://opensource.org/licenses/bsd-license.php\r
11//\r
12// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14//\r
15// This program is the command line interface to the CombineMsa class, which\r
16// will take the following arguments:\r
17//\r
18// Input:\r
19// -t Target The MSA file that will be created\r
20// -u UiName The UiName for the merged MSA OPTIONAL\r
21// If not provided, the UiName will come from the\r
22// first leaf MSA file\r
23// -p Package The SPD file that the new MSA file will be added to. OPTIONAL\r
24// leaf.msa The path and filename of the MSA files to be merged into the Target.\r
25//\r
26// Output:\r
27// Target.msa\r
28//\r
29// Modifies - OPTIONAL\r
30// Package.spd\r
31//\r
32\r
33package org.tianocore.Merge;\r
34\r
35import java.io.*;\r
36import java.util.*;\r
37\r
38// import org.tianocore.Merge.CombineMsa;\r
39\r
40public class MergeCmd {\r
41\r
42 private static int DEBUG = 1;\r
43 \r
44 private static final String copyright = "Copyright (c) 2006, Intel Corporation All rights reserved.";\r
45 \r
46 private static final String version = "Version 0.1";\r
47 \r
48 private int VERBOSE = 0;\r
49\r
50 private String targetFile = null;\r
51\r
52 private ArrayList<String> leafFiles = new ArrayList<String>();\r
53\r
54 private String spdFile = null;\r
55\r
56 private String uiName = null;\r
57 \r
58 private String fileBasename = null;\r
59\r
60 private final int ESUCCESS = 0;\r
61\r
62 private final int EFAILURE = 1;\r
63\r
64 private final static int FOUND = 1;\r
65\r
66 private final static int NOTFOUND = 0;\r
67\r
68 private int result = ESUCCESS;\r
69\r
70 public int MergeCmdLine(String[] args) {\r
71 result = parseCmdLine(args);\r
72 if (result == ESUCCESS) {\r
73 if ((DEBUG > 7) || (VERBOSE > 5)) {\r
74 System.out.println("Parse Succeeded!");\r
75 System.out.println("CWD: " + System.getProperty("user.dir"));\r
76 System.out.println("Merge Module Name: " + targetFile);\r
77 System.out.println("Found Leaf Module: " + leafFiles.size());\r
78 if (spdFile != null)\r
79 System.out.println("Package Name: " + spdFile);\r
80 if (uiName != null)\r
81 System.out.println("User Interface Name: " + uiName);\r
82 }\r
83 CombineMsa newMsa = new CombineMsa();\r
84 result = newMsa.combineMsaFiles(targetFile, leafFiles, uiName, spdFile, fileBasename, VERBOSE);\r
85 }\r
86 return result;\r
87 }\r
88\r
89 private int parseCmdLine(String[] args) {\r
90\r
91 if (args.length == NOTFOUND) {\r
92 outputUsage();\r
93 System.exit(EFAILURE);\r
94 }\r
95\r
96 for (int i = 0; i < args.length; i++) {\r
97 if (args[i].toLowerCase().contains("-t")) {\r
98 i++;\r
99 targetFile = args[i];\r
100 targetFile.replace(" ", "_");\r
101 if (!targetFile.toLowerCase().contains(".msa"))\r
102 targetFile = targetFile + ".msa";\r
103\r
104\r
105 } else if (args[i].toLowerCase().contains("-p")) {\r
106 i++;\r
107 spdFile = args[i];\r
108 if (!spdFile.toLowerCase().contains(".spd"))\r
109 spdFile = spdFile + ".spd";\r
110 spdFile = spdFile.replace("\\", "/").trim();\r
111 if (testFile(spdFile) == NOTFOUND) {\r
112 System.out.println("WARNING: The Package file: " + spdFile + " does NOT exist!");\r
113 System.out.print("Do you want to continue anyway [y|N]? ");\r
114 String inputLine = null;\r
115 try {\r
116 BufferedReader inputString = new BufferedReader(new InputStreamReader(System.in));\r
117 inputLine = inputString.readLine();\r
118 if ((inputLine.length() == 0) || (!inputLine.toLowerCase().contains("y"))) {\r
119 System.out.println("Merge Aborted at user request!");\r
120 System.exit(EFAILURE);\r
121 } else {\r
122 spdFile = null;\r
123 System.out\r
124 .println("Continuing with the Merge. Don't forget to add the new MSA file to a Package.");\r
125 }\r
126 } catch (IOException e) {\r
127 System.out.println("IOException: " + e);\r
128 }\r
129 }\r
130 } else if (args[i].toLowerCase().contains("-u")) {\r
131 i++;\r
132 uiName = args[i];\r
133 } else if (args[i].toLowerCase().contains("-o")) {\r
134 i++;\r
135 fileBasename = args[i];\r
136 } else if (args[i].toLowerCase().contains("-v")) {\r
137 VERBOSE++;\r
138 } else if ((args[i].toLowerCase().contains("-h")) || (args[i].toLowerCase().contains("-?"))\r
139 || (args[i].toLowerCase().contains("/h")) || (args[i].toLowerCase().contains("--help"))) {\r
140 outputUsage();\r
141 System.exit(EFAILURE);\r
142 } else {\r
143 if (args[i].startsWith("-")) {\r
144 System.out.println("Invalid Argument: " + args[i]);\r
145 outputUsage();\r
146 System.out.println("Merge Aborted!");\r
147 System.exit(EFAILURE);\r
148 }\r
149 String leafFile = args[i];\r
150 if (!leafFile.toLowerCase().contains(".msa"))\r
151 leafFile = leafFile + ".msa";\r
152\r
153 if (testFile(leafFile) == NOTFOUND) {\r
154 System.out.println("ERROR: The Leaf MSA File: " + leafFile + " was NOT FOUND!");\r
155 System.out.println("Merge Aborted!");\r
156 System.exit(EFAILURE);\r
157 } else {\r
158 if (DEBUG > 9)\r
159 System.out.println("Found Leaf Module: " + leafFile);\r
160 leafFiles.add(leafFile);\r
161 }\r
162 }\r
163 }\r
164 if (testFile(targetFile) == FOUND) {\r
165 System.out.println("WARNING: The targetfile: " + targetFile + "Already Exists!");\r
166 System.out.print("Do you want to over write it [y|N]? ");\r
167 String inputLine = null;\r
168 try {\r
169 BufferedReader inputString = new BufferedReader(new InputStreamReader(System.in));\r
170 inputLine = inputString.readLine();\r
171 if ((inputLine.length() == 0) || (!inputLine.toLowerCase().contains("y"))) {\r
172 System.out.println("Please correct the options, then try again.");\r
173 System.out.println("Merge Aborted at user request!");\r
174 System.exit(EFAILURE);\r
175 }\r
176 } catch (IOException e) {\r
177 System.out.println("IOException: " + e);\r
178 }\r
179\r
180 }\r
181 return ESUCCESS;\r
182 }\r
183\r
184 private static int testFile(String Filename) {\r
185 File tFile = new File(Filename);\r
186 if (DEBUG > 8)\r
187 System.out.println("File is located: " + tFile.getPath());\r
188 if (tFile.exists())\r
189 return FOUND;\r
190 else\r
191 return NOTFOUND;\r
192 }\r
193\r
194 private static void outputUsage() {\r
195 \r
196 \r
197 System.out.println("Merge, " + version);\r
198 System.out.println(copyright);\r
199 System.out.println("Usage:");\r
200 System.out.println(" merge [-v] -t target [-u UiName] [-p PackageFile] dir1" + File.separator + "leaf1 ... dirN" + File.separator + "leafN [-h | -? | --help]");\r
201 System.out.println(" where:");\r
202 System.out.println(" -h | -? | --help OPTIONAL - This Help Text");\r
203 System.out.println(" -t Target REQUIRED - The Name of the new Merge Module MSA file");\r
204 System.out.println(" -p Package OPTIONAL - The Name of the Package (SPD) file to add the target");\r
205 System.out.println(" -u UiName OPTIONAL - The User Interface Name for the Target Module");\r
206 System.out.println(" -v OPTIONAL - Verbose, print information messages.");\r
207 System.out.println(" -o OutputFileBasename OPTIONAL - Set the Output Filename for this module to Basename");\r
208 System.out.println(" dir1" + File.separator + "leaf1 ... dirN" + File.separator + "leafN REQUIRED The path to two or more MSA files that will be merged");\r
209 System.out.println("");\r
210 }\r
211}\r