build/buildutils/extractJavaLocFiles.py
changeset 21 2a9601315dfc
child 80 d6dafc5d983f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build/buildutils/extractJavaLocFiles.py	Mon May 03 12:27:20 2010 +0300
@@ -0,0 +1,107 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+#!/usr/bin/python
+#
+# This script creates java specific loc zip files from S60 loc zip files
+# and also creates a "resources.jar" file where all the java loc files
+# are collected.
+#
+# Usage: extractJavaLocFiles.py <input_dir> <output_dir>
+#
+# Script reads S60 loc zip files from <input_dir> directory and writes
+# java loc zip files and "resources.jar" to <output_dir> directory.
+#
+# This script uses external "jar" command for handling zip files and
+# thus is not optimized for speed.
+#
+
+import os, re, shutil, sys, zipfile
+import traceback
+from optparse import OptionParser
+
+# Base names for java loc files.
+JAVA_LOC_FILES = [
+    'javafileconnection',
+    'javainstallation',
+    'javasensor',
+    'javassl',
+    'javausermessages',
+    'javaapplicationsettings',
+    ]
+
+# Pattern for loc zip file names.
+LOC_ZIP_FILE = re.compile("^\d+\.zip$", re.IGNORECASE)
+
+# Path for java loc files inside RESOURCES_FILE.
+RESOURCES_PATH = os.path.join("resources", "com", "nokia", "mj", "impl")
+
+def main():
+    parser = OptionParser(
+        usage = "Usage: %prog [args] <input_dir> <output_dir>")
+    (opts, args) = parser.parse_args()
+
+    try:
+        inputDir = args[0]
+        outputDir = args[1]
+        resourcesFilename = os.path.join(outputDir, args[2])
+
+        print "Processing loc files from %s to %s" % (inputDir, outputDir)
+        locFileCount = 0;
+        for dirname, _, filenames in os.walk(inputDir):
+            for file in filenames:
+                inFilename = os.path.join(dirname, file)
+                if LOC_ZIP_FILE.match(file) and zipfile.is_zipfile(inFilename):
+                    outFilename = os.path.join(outputDir, file.lower())
+                    (fileIndex, fileExt) = os.path.splitext(file)
+                    print "Extracting %s" % inFilename
+                    extractJavaLocFiles(fileIndex, inFilename)
+                    print "Creating %s" % outFilename
+                    os.system("jar cfM " + outFilename + " " + fileIndex)
+                    print "Updating %s" % resourcesFilename
+                    updateResources(fileIndex, resourcesFilename)
+                    # Remove temporary fileIndex directory.
+                    if os.path.isdir(fileIndex):
+                        shutil.rmtree(fileIndex)
+                    locFileCount = locFileCount + 1
+        print "Processed %d loc files" % (locFileCount)
+
+    except:
+        print "Usage: %s <input_dir> <output_dir>" % sys.argv[0]
+        traceback.print_exc()
+        sys.exit(1)
+
+def extractJavaLocFiles(index, inFilename):
+    javaLocFiles = ""
+    for javaLocFile in JAVA_LOC_FILES:
+        javaLocFilename = os.path.join(index, javaLocFile + "_" + index + ".loc")
+        javaLocFiles = javaLocFiles + " " + javaLocFilename
+    os.system("jar xf " + inFilename + javaLocFiles)
+
+def updateResources(index, resourcesFilename):
+    resourcesDir = os.path.join(index, RESOURCES_PATH)
+    if not os.path.isdir(resourcesDir):
+        os.makedirs(resourcesDir)
+    for dirname, _, filenames in os.walk(index):
+        for file in filenames:
+            os.rename(os.path.join(dirname, file),
+                      os.path.join(resourcesDir, file))
+    if os.path.isfile(resourcesFilename):
+        os.system("jar ufM " + resourcesFilename + " -C " + index + " .")
+    else:
+        os.system("jar cfM " + resourcesFilename + " -C " + index + " .")
+
+if __name__ == "__main__":
+    main()