src/tools/py2sis/ensymble/cmdmain.py
changeset 0 ca70ae20a155
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/py2sis/ensymble/cmdmain.py	Tue Feb 16 10:07:05 2010 +0530
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+##############################################################################
+# ensymble.py - Ensymble command line tool
+# Copyright 2006, 2007, 2008, 2009 Jussi Ylänen
+#
+# This file is part of Ensymble developer utilities for Symbian OS(TM).
+#
+# Ensymble is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Ensymble is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ensymble; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+##############################################################################
+
+import sys
+import os
+
+# Import command modules.
+cmddict     = {"altere32":  None, "genuid":     None,
+               "infoe32":   None, "mergesis":   None,
+               "py2sis":    None, "signsis":    None,
+               "simplesis": None, "version":    None}
+for cmdname in cmddict.keys():
+    cmddict[cmdname] = __import__("cmd_%s" % cmdname, globals(), locals(), [])
+
+
+def main():
+    pgmname = os.path.basename(sys.argv[0])
+    debug   = False
+
+    # Parse command line parameters.
+    try:
+        if len(sys.argv) < 2 or sys.argv[1] in ("-h", "--help"):
+            # No command given, print help.
+            commands = []
+            for cmd in cmddict.keys():
+                commands.append("    %-12s %s" % (cmd, cmddict[cmd].shorthelp))
+            commands.sort()
+            commands = "\n".join(commands)
+
+            print (
+'''
+Ensymble developer utilities for Symbian OS
+
+usage: %(pgmname)s command [command options]...
+
+Commands:
+%(commands)s
+
+Use '%(pgmname)s command --help' to get command specific help.
+''' % locals())
+            return 0
+
+        command = sys.argv[1]
+        if command not in cmddict.keys():
+            raise ValueError("invalid command '%s'" % command)
+
+        if "-h" in sys.argv[2:] or "--help" in sys.argv[2:]:
+            # Print command specific help.
+            longhelp = cmddict[command].longhelp
+            print (
+'''
+Ensymble developer utilities for Symbian OS
+
+usage: %(pgmname)s %(longhelp)s''' % locals())
+        else:
+            if "--debug" in sys.argv[2:]:
+                # Enable raw exception reporting.
+                debug = True
+
+            # Run command.
+            cmddict[command].run(pgmname, sys.argv[2:])
+    except Exception, e:
+        if debug:
+            # Debug output requested, print exception traceback as-is.
+            raise
+        else:
+            # Normal output, use terse exception reporting.
+            return "%s: %s" % (pgmname, str(e))
+
+    return 0
+
+# Call main if run as stand-alone executable.
+#if __name__ == '__main__':
+#    sys.exit(main())
+
+# Call main regardless, to support packing with the squeeze utility.
+sys.exit(main())