]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/MigrationTools/org/tianocore/migration/ModuleReader.java
Extract msa license info from inf file.
[mirror_edk2.git] / Tools / Java / Source / MigrationTools / org / tianocore / migration / ModuleReader.java
index 09d426282f0d46e94b7a39b1f0c40e548e7ef826..0f1df7b59343187de77f4dbd95a1f0fa066638e7 100644 (file)
@@ -26,7 +26,7 @@ public final class ModuleReader implements Common.ForDoAll {
     private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");\r
     private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);\r
     private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");\r
-    \r
+\r
     public final void ModuleScan() throws Exception {\r
         Common.toDoAll(mi.modulepath, ModuleInfo.class.getMethod("enroll", String.class), mi, null, Common.FILE);\r
 \r
@@ -72,7 +72,36 @@ public final class ModuleReader implements Common.ForDoAll {
             }\r
         }\r
     }\r
-    \r
+    private final String extractLicense(String wholeline) throws Exception {\r
+        String tempLine;\r
+        String license = null;\r
+\r
+        BufferedReader rd = new BufferedReader(new StringReader(wholeline));\r
+        while ((tempLine = rd.readLine()) != null) {\r
+            if (tempLine.contains("#")) {\r
+                if (tempLine.contains("Copyright")) {\r
+                    //\r
+                    // Find license info.\r
+                    // \r
+                    license = "";\r
+                    while ((tempLine = rd.readLine())!= null) {\r
+                        if (!tempLine.contains("#") ||\r
+                             tempLine.contains("Module Name:") ||\r
+                             tempLine.contains("Abstract:")) {\r
+                            //\r
+                            // We assume license ends here.\r
+                            // \r
+                            break;\r
+                        }\r
+                        license += "      " + tempLine.replaceAll("\\s*[#]\\s*(.*)", "$1\n");\r
+                    }\r
+                    break;\r
+                }\r
+            }\r
+        }\r
+        return license;\r
+    }\r
+\r
     private final void readInf(String name) throws Exception {\r
         System.out.println("\nParsing INF file: " + name);\r
         String wholeline;\r
@@ -81,6 +110,7 @@ public final class ModuleReader implements Common.ForDoAll {
         Matcher mtrfilename;\r
 \r
         wholeline = Common.file2string(mi.modulepath + File.separator + name);\r
+        mi.license = extractLicense(wholeline);\r
         mtrsection = ptnsection.matcher(wholeline);\r
         while (mtrsection.find()) {\r
             if (mtrsection.group(1).matches("defines")) {\r