]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/Merge/src/org/tianocore/Merge/MergeCmd.java
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Java / Source / Merge / src / org / tianocore / Merge / MergeCmd.java
diff --git a/Tools/Java/Source/Merge/src/org/tianocore/Merge/MergeCmd.java b/Tools/Java/Source/Merge/src/org/tianocore/Merge/MergeCmd.java
new file mode 100644 (file)
index 0000000..1e44d2f
--- /dev/null
@@ -0,0 +1,211 @@
+// @file\r
+//  MergeCmd command-line interface to the classes that combine\r
+//      multiple MSA files into a single MSA file.\r
+//\r
+//  Copyright (c) 2006, Intel Corporation    All rights reserved.\r
+//\r
+//  This program and the accompanying materials are licensed and made\r
+//  available under the terms and conditions of the BSD License which\r
+//  accompanies this distribution.  The full text of the license may \r
+//  be found at  http://opensource.org/licenses/bsd-license.php\r
+//\r
+//  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+//  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+//\r
+//    This program is the command line interface to the CombineMsa class, which\r
+//    will take the following arguments:\r
+//\r
+//  Input:\r
+//      -t Target   The MSA file that will be created\r
+//      -u UiName   The UiName for the merged MSA   OPTIONAL\r
+//                  If not provided, the UiName will come from the\r
+//                  first leaf MSA file\r
+//      -p Package  The SPD file that the new MSA file will be added to.  OPTIONAL\r
+//      leaf.msa    The path and filename of the MSA files to be merged into the Target.\r
+//\r
+//  Output:\r
+//      Target.msa\r
+//\r
+//  Modifies - OPTIONAL\r
+//      Package.spd\r
+//\r
+\r
+package org.tianocore.Merge;\r
+\r
+import java.io.*;\r
+import java.util.*;\r
+\r
+// import org.tianocore.Merge.CombineMsa;\r
+\r
+public class MergeCmd {\r
+\r
+    private static int DEBUG = 1;\r
+    \r
+    private static final String copyright  = "Copyright (c) 2006, Intel Corporation      All rights reserved.";\r
+    \r
+    private static final String version = "Version 0.1";\r
+    \r
+    private int VERBOSE = 0;\r
+\r
+    private String targetFile = null;\r
+\r
+    private ArrayList<String> leafFiles = new ArrayList<String>();\r
+\r
+    private String spdFile = null;\r
+\r
+    private String uiName = null;\r
+    \r
+    private String fileBasename = null;\r
+\r
+    private final int ESUCCESS = 0;\r
+\r
+    private final int EFAILURE = 1;\r
+\r
+    private final static int FOUND = 1;\r
+\r
+    private final static int NOTFOUND = 0;\r
+\r
+    private int result = ESUCCESS;\r
+\r
+    public int MergeCmdLine(String[] args) {\r
+        result = parseCmdLine(args);\r
+        if (result == ESUCCESS) {\r
+            if ((DEBUG > 7) || (VERBOSE > 5)) {\r
+                System.out.println("Parse Succeeded!");\r
+                System.out.println("CWD: " + System.getProperty("user.dir"));\r
+                System.out.println("Merge Module Name:   " + targetFile);\r
+                System.out.println("Found Leaf Module:   " + leafFiles.size());\r
+                if (spdFile != null)\r
+                    System.out.println("Package Name:        " + spdFile);\r
+                if (uiName != null)\r
+                    System.out.println("User Interface Name: " + uiName);\r
+            }\r
+            CombineMsa newMsa = new CombineMsa();\r
+            result = newMsa.combineMsaFiles(targetFile, leafFiles, uiName, spdFile, fileBasename, VERBOSE);\r
+        }\r
+        return result;\r
+    }\r
+\r
+    private int parseCmdLine(String[] args) {\r
+\r
+        if (args.length == NOTFOUND) {\r
+            outputUsage();\r
+            System.exit(EFAILURE);\r
+        }\r
+\r
+        for (int i = 0; i < args.length; i++) {\r
+            if (args[i].toLowerCase().contains("-t")) {\r
+                i++;\r
+                targetFile = args[i];\r
+                targetFile.replace(" ", "_");\r
+                if (!targetFile.toLowerCase().contains(".msa"))\r
+                    targetFile = targetFile + ".msa";\r
+\r
+\r
+            } else if (args[i].toLowerCase().contains("-p")) {\r
+                i++;\r
+                spdFile = args[i];\r
+                if (!spdFile.toLowerCase().contains(".spd"))\r
+                    spdFile = spdFile + ".spd";\r
+                spdFile = spdFile.replace("\\", "/").trim();\r
+                if (testFile(spdFile) == NOTFOUND) {\r
+                    System.out.println("WARNING: The Package file: " + spdFile + " does NOT exist!");\r
+                    System.out.print("Do you want to continue anyway [y|N]? ");\r
+                    String inputLine = null;\r
+                    try {\r
+                        BufferedReader inputString = new BufferedReader(new InputStreamReader(System.in));\r
+                        inputLine = inputString.readLine();\r
+                        if ((inputLine.length() == 0) || (!inputLine.toLowerCase().contains("y"))) {\r
+                            System.out.println("Merge Aborted at user request!");\r
+                            System.exit(EFAILURE);\r
+                        } else {\r
+                            spdFile = null;\r
+                            System.out\r
+                                      .println("Continuing with the Merge.  Don't forget to add the new MSA file to a Package.");\r
+                        }\r
+                    } catch (IOException e) {\r
+                        System.out.println("IOException: " + e);\r
+                    }\r
+                }\r
+            } else if (args[i].toLowerCase().contains("-u")) {\r
+                i++;\r
+                uiName = args[i];\r
+            } else if (args[i].toLowerCase().contains("-o")) {\r
+                i++;\r
+                fileBasename = args[i];\r
+            } else if (args[i].toLowerCase().contains("-v")) {\r
+                VERBOSE++;\r
+            } else if ((args[i].toLowerCase().contains("-h")) || (args[i].toLowerCase().contains("-?"))\r
+                       || (args[i].toLowerCase().contains("/h")) || (args[i].toLowerCase().contains("--help"))) {\r
+                outputUsage();\r
+                System.exit(EFAILURE);\r
+            } else {\r
+                if (args[i].startsWith("-")) {\r
+                    System.out.println("Invalid Argument: " + args[i]);\r
+                    outputUsage();\r
+                    System.out.println("Merge Aborted!");\r
+                    System.exit(EFAILURE);\r
+                }\r
+                String leafFile = args[i];\r
+                if (!leafFile.toLowerCase().contains(".msa"))\r
+                    leafFile = leafFile + ".msa";\r
+\r
+                if (testFile(leafFile) == NOTFOUND) {\r
+                    System.out.println("ERROR: The Leaf MSA File: " + leafFile + " was NOT FOUND!");\r
+                    System.out.println("Merge Aborted!");\r
+                    System.exit(EFAILURE);\r
+                } else {\r
+                    if (DEBUG > 9)\r
+                        System.out.println("Found Leaf Module:   " + leafFile);\r
+                    leafFiles.add(leafFile);\r
+                }\r
+            }\r
+        }\r
+        if (testFile(targetFile) == FOUND) {\r
+            System.out.println("WARNING: The targetfile: " + targetFile + "Already Exists!");\r
+            System.out.print("Do you want to over write it [y|N]? ");\r
+            String inputLine = null;\r
+            try {\r
+                BufferedReader inputString = new BufferedReader(new InputStreamReader(System.in));\r
+                inputLine = inputString.readLine();\r
+                if ((inputLine.length() == 0) || (!inputLine.toLowerCase().contains("y"))) {\r
+                    System.out.println("Please correct the options, then try again.");\r
+                    System.out.println("Merge Aborted at user request!");\r
+                    System.exit(EFAILURE);\r
+                }\r
+            } catch (IOException e) {\r
+                System.out.println("IOException: " + e);\r
+            }\r
+\r
+        }\r
+        return ESUCCESS;\r
+    }\r
+\r
+    private static int testFile(String Filename) {\r
+        File tFile = new File(Filename);\r
+        if (DEBUG > 8)\r
+            System.out.println("File is located: " + tFile.getPath());\r
+        if (tFile.exists())\r
+            return FOUND;\r
+        else\r
+            return NOTFOUND;\r
+    }\r
+\r
+    private static void outputUsage() {\r
+        \r
+        \r
+        System.out.println("Merge, " + version);\r
+        System.out.println(copyright);\r
+        System.out.println("Usage:");\r
+        System.out.println("  merge [-v] -t target [-u UiName] [-p PackageFile] dir1" + File.separator + "leaf1 ... dirN" + File.separator + "leafN [-h | -? | --help]");\r
+        System.out.println("    where:");\r
+        System.out.println("      -h | -? | --help            OPTIONAL - This Help Text");\r
+        System.out.println("      -t Target                   REQUIRED - The Name of the new Merge Module MSA file");\r
+        System.out.println("      -p Package                  OPTIONAL - The Name of the Package (SPD) file to add the target");\r
+        System.out.println("      -u UiName                   OPTIONAL - The User Interface Name for the Target Module");\r
+        System.out.println("      -v                          OPTIONAL - Verbose, print information messages.");\r
+        System.out.println("      -o OutputFileBasename       OPTIONAL - Set the Output Filename for this module to Basename");\r
+        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
+        System.out.println("");\r
+    }\r
+}\r