]>
Commit | Line | Data |
---|---|---|
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 | |
33 | package org.tianocore.Merge;\r | |
34 | \r | |
35 | import java.io.*;\r | |
36 | import java.util.*;\r | |
37 | \r | |
38 | // import org.tianocore.Merge.CombineMsa;\r | |
39 | \r | |
40 | public 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 |