uninstall.py

changeset 0
de9c2efb9d02
child 12
1d8dd9706f46
diff -r 000000000000 -r de9c2efb9d02 uninstall.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uninstall.py	Mon Dec 28 16:03:33 2009 +0000
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2002-2009 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+# This is the uninstall script for eric4.
+
+"""
+Uninstallation script for the eric4 IDE and all eric4 related tools.
+"""
+
+import sys
+import os
+import shutil
+import glob
+import distutils.sysconfig
+
+from eric4config import getConfig
+
+# Define the globals.
+progName = None
+pyModDir = None
+
+def usage(rcode = 2):
+    """Display a usage message and exit.
+
+    rcode is the return code passed back to the calling process.
+    """
+    global progName
+
+    print "Usage:"
+    print "    %s [-h]" % (progName)
+    print "where:"
+    print "    -h             display this help message"
+
+    sys.exit(rcode)
+
+
+def initGlobals():
+    """
+    Sets the values of globals that need more than a simple assignment.
+    """
+    global pyModDir
+
+    pyModDir = distutils.sysconfig.get_python_lib(True)
+
+
+def wrapperName(dname,wfile):
+    """Create the platform specific name for the wrapper script.
+    """
+    if sys.platform.startswith("win"):
+        wname = dname + "\\" + wfile + ".bat"
+    else:
+        wname = dname + "/" + wfile
+
+    return wname
+
+
+def uninstallEric():
+    """
+    Uninstall the eric files.
+    """
+    global pyModDir
+    
+    # Remove the wrapper scripts
+    rem_wnames = [
+        "eric4-api", "eric4-compare",
+        "eric4-configure", "eric4-diff",
+        "eric4-doc", "eric4-helpviewer",
+        "eric4-qregexp", "eric4-re", 
+        "eric4-trpreviewer", "eric4-uipreviewer",
+        "eric4-unittest", "eric4",
+        "eric4-tray", "eric4-editor", 
+        "eric4-plugininstall", "eric4-pluginuninstall", 
+        "eric4-pluginrepository", "eric4-sqlbrowser", 
+        "eric4-webbrowser", 
+    ]
+    for rem_wname in rem_wnames:
+        rwname = wrapperName(getConfig('bindir'),rem_wname)
+        if os.path.exists(rwname):
+            os.remove(rwname)
+    
+    # Cleanup our config file
+    for name in ['eric4config.py', 'eric4config.pyc']:
+        e4cfile = os.path.join(pyModDir, name)
+        if os.path.exists(e4cfile):
+            os.remove(e4cfile)
+    
+    # Cleanup the install directories
+    for name in ['ericExamplesDir', 'ericDocDir', 'ericDTDDir', 'ericCSSDir',
+                 'ericIconDir', 'ericPixDir', 'ericDir', 'ericTemplatesDir',
+                 'ericCodeTemplatesDir', 'ericOthersDir', 'ericStylesDir']:
+        dirpath = getConfig(name)
+        if os.path.exists(dirpath):
+            shutil.rmtree(dirpath, True)
+    
+    # Cleanup translations
+    for name in glob.glob(os.path.join(getConfig('ericTranslationsDir'), 'eric4_*.qm')):
+        if os.path.exists(name):
+            os.remove(name)
+    
+    # Cleanup API files
+    apidir = getConfig('apidir')
+    for name in getConfig('apis'):
+        apiname = os.path.join(apidir, name)
+        if os.path.exists(apiname):
+            os.remove(apiname)
+    
+def main(argv):
+    """The main function of the script.
+
+    argv is the list of command line arguments.
+    """
+    import getopt
+
+    initGlobals()
+
+    # Parse the command line.
+    global progName
+    progName = os.path.basename(argv[0])
+
+    try:
+        optlist, args = getopt.getopt(argv[1:],"h")
+    except getopt.GetoptError:
+        usage()
+
+    global platBinDir
+
+    for opt, arg in optlist:
+        if opt == "-h":
+            usage(0)
+    
+    try:
+        uninstallEric()
+    except IOError, msg:
+        sys.stderr.write('IOError: %s\nTry uninstall as root.\n' % msg)
+    
+    
+if __name__ == "__main__":
+    try:
+        main(sys.argv)
+    except SystemExit:
+        raise
+    except:
+        print \
+"""An internal error occured.  Please report all the output of the program,
+including the following traceback, to eric5-bugs@eric-ide.python-projects.org.
+"""
+        raise

eric ide

mercurial