scripts/uninstall.py

branch
eric7-maintenance
changeset 9264
18a7312cfdb3
parent 9192
a763d57e23bc
parent 9221
bf71ee032bb4
child 9371
1da8bc75946f
--- a/scripts/uninstall.py	Sun Jul 03 18:09:29 2022 +0200
+++ b/scripts/uninstall.py	Sun Jul 24 11:29:56 2022 +0200
@@ -31,25 +31,26 @@
 def exit(rcode=0):
     """
     Exit the uninstall script.
-    
+
     @param rcode result code to report back (integer)
     """
     global currDir
-    
+
     # restore the local eric7config.py
     if os.path.exists("eric7config.py.orig"):
         if os.path.exists("eric7config.py"):
             os.remove("eric7config.py")
         os.rename("eric7config.py.orig", "eric7config.py")
-    
+
     if sys.platform.startswith(("win", "cygwin")):
         with contextlib.suppress():
-            input("Press enter to continue...")         # secok
-    
+            input("Press enter to continue...")  # secok
+
     os.chdir(currDir)
-    
+
     sys.exit(rcode)
 
+
 # get a local eric7config.py out of the way
 if os.path.exists("eric7config.py"):
     os.rename("eric7config.py", "eric7config.py.orig")
@@ -86,21 +87,21 @@
     """
     global pyModDir
 
-    pyModDir = sysconfig.get_path('platlib')
+    pyModDir = sysconfig.get_path("platlib")
 
 
 def wrapperNames(dname, wfile):
     """
     Create the platform specific names for the wrapper script.
-    
+
     @param dname name of the directory to place the wrapper into
     @param wfile basename (without extension) of the wrapper script
     @return the names of the wrapper scripts
     """
     wnames = (
         (dname + "\\" + wfile + ".cmd", dname + "\\" + wfile + ".bat")
-        if sys.platform.startswith(("win", "cygwin")) else
-        (dname + "/" + wfile, )
+        if sys.platform.startswith(("win", "cygwin"))
+        else (dname + "/" + wfile,)
     )
 
     return wnames
@@ -111,35 +112,51 @@
     Uninstall the eric files.
     """
     global pyModDir
-    
+
     # Remove the menu entry for Linux systems
     if sys.platform.startswith("linux"):
         uninstallLinuxSpecifics()
     # Remove the Desktop and Start Menu entries for Windows systems
     elif sys.platform.startswith(("win", "cygwin")):
         uninstallWindowsLinks()
-    
+
     # Remove the wrapper scripts
     rem_wnames = [
-        "eric7_api", "eric7_browser", "eric7_compare", "eric7_configure",
-        "eric7_diff", "eric7_doc", "eric7_editor", "eric7_hexeditor",
-        "eric7_iconeditor", "eric7_plugininstall", "eric7_pluginrepository",
-        "eric7_pluginuninstall", "eric7_qregularexpression", "eric7_re",
-        "eric7_shell", "eric7_snap", "eric7_sqlbrowser", "eric7_testing",
-        "eric7_tray", "eric7_trpreviewer", "eric7_uipreviewer",
-        "eric7_virtualenv", "eric7",
+        "eric7_api",
+        "eric7_browser",
+        "eric7_compare",
+        "eric7_configure",
+        "eric7_diff",
+        "eric7_doc",
+        "eric7_editor",
+        "eric7_hexeditor",
+        "eric7_iconeditor",
+        "eric7_plugininstall",
+        "eric7_pluginrepository",
+        "eric7_pluginuninstall",
+        "eric7_qregularexpression",
+        "eric7_re",
+        "eric7_shell",
+        "eric7_snap",
+        "eric7_sqlbrowser",
+        "eric7_testing",
+        "eric7_tray",
+        "eric7_trpreviewer",
+        "eric7_uipreviewer",
+        "eric7_virtualenv",
+        "eric7",
         # obsolete scripts below
         "eric7_unittest",
     ]
-    
+
     try:
         for rem_wname in rem_wnames:
-            for rwname in wrapperNames(getConfig('bindir'), rem_wname):
+            for rwname in wrapperNames(getConfig("bindir"), rem_wname):
                 if os.path.exists(rwname):
                     os.remove(rwname)
-        
+
         # Cleanup our config file(s)
-        for name in ['eric7config.py', 'eric7config.pyc', 'eric7.pth']:
+        for name in ["eric7config.py", "eric7config.pyc", "eric7.pth"]:
             e5cfile = os.path.join(pyModDir, name)
             if os.path.exists(e5cfile):
                 os.remove(e5cfile)
@@ -147,54 +164,64 @@
             path, ext = os.path.splitext(e5cfile)
             for f in glob.glob("{0}.*{1}".format(path, ext)):
                 os.remove(f)
-        
+
         # Cleanup the install directories
-        for name in ['ericExamplesDir', 'ericDocDir', 'ericDTDDir',
-                     'ericCSSDir', 'ericIconDir', 'ericPixDir',
-                     'ericTemplatesDir', 'ericCodeTemplatesDir',
-                     'ericOthersDir', 'ericStylesDir', 'ericThemesDir',
-                     'ericDir']:
+        for name in [
+            "ericExamplesDir",
+            "ericDocDir",
+            "ericDTDDir",
+            "ericCSSDir",
+            "ericIconDir",
+            "ericPixDir",
+            "ericTemplatesDir",
+            "ericCodeTemplatesDir",
+            "ericOthersDir",
+            "ericStylesDir",
+            "ericThemesDir",
+            "ericDir",
+        ]:
             with contextlib.suppress(AttributeError):
                 dirpath = getConfig(name)
                 if os.path.exists(dirpath):
                     shutil.rmtree(dirpath, True)
-        
+
         # Cleanup translations
         for name in glob.glob(
-                os.path.join(getConfig('ericTranslationsDir'), 'eric7_*.qm')):
+            os.path.join(getConfig("ericTranslationsDir"), "eric7_*.qm")
+        ):
             if os.path.exists(name):
                 os.remove(name)
-        
+
         # Cleanup API files
-        apidir = getConfig('apidir')
+        apidir = getConfig("apidir")
         if apidir:
             for progLanguage in progLanguages:
-                for name in getConfig('apis'):
+                for name in getConfig("apis"):
                     apiname = os.path.join(apidir, progLanguage.lower(), name)
                     if os.path.exists(apiname):
                         os.remove(apiname)
                 for apiname in glob.glob(
-                        os.path.join(apidir, progLanguage.lower(), "*.bas")):
+                    os.path.join(apidir, progLanguage.lower(), "*.bas")
+                ):
                     if os.path.basename(apiname) != "eric7.bas":
                         os.remove(apiname)
-        
+
         if sys.platform == "darwin":
             # delete the Mac app bundle
             uninstallMacAppBundle()
-        
+
         # remove plug-in directories
         removePluginDirectories()
-        
+
         # remove the eric data directory
         removeDataDirectory()
-        
+
         # remove the eric configuration directory
         removeConfigurationData()
-        
+
         print("\nUninstallation completed")
     except OSError as msg:
-        sys.stderr.write(
-            'Error: {0}\nTry uninstall with admin rights.\n'.format(msg))
+        sys.stderr.write("Error: {0}\nTry uninstall with admin rights.\n".format(msg))
         exit(7)
 
 
@@ -203,16 +230,16 @@
     Clean up the Desktop and Start Menu entries for Windows.
     """
     try:
-        from pywintypes import com_error        # __IGNORE_WARNING__
+        from pywintypes import com_error  # __IGNORE_WARNING__
     except ImportError:
         # links were not created by install.py
         return
-    
+
     regPath = (
-        "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer" +
-        "\\User Shell Folders"
+        "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer"
+        + "\\User Shell Folders"
     )
-    
+
     # 1. cleanup desktop links
     regName = "Desktop"
     desktopEntry = getWinregEntry(regName, regPath)
@@ -226,7 +253,7 @@
                 except OSError:
                     # maybe restrictions prohibited link removal
                     print("Could not remove '{0}'.".format(linkPath))
-    
+
     # 2. cleanup start menu entry
     regName = "Programs"
     programsEntry = getWinregEntry(regName, regPath)
@@ -287,11 +314,10 @@
     except AttributeError:
         macAppBundlePath = defaultMacAppBundlePath
         macAppBundleName = defaultMacAppBundleName
-    for bundlePath in [os.path.join(defaultMacAppBundlePath,
-                                    macAppBundleName),
-                       os.path.join(macAppBundlePath,
-                                    macAppBundleName),
-                       ]:
+    for bundlePath in [
+        os.path.join(defaultMacAppBundlePath, macAppBundleName),
+        os.path.join(macAppBundlePath, macAppBundleName),
+    ]:
         if os.path.exists(bundlePath):
             shutil.rmtree(bundlePath)
 
@@ -301,15 +327,15 @@
     Remove the plug-in directories.
     """
     pathsToRemove = []
-    
-    globalPluginsDir = os.path.join(getConfig('mdir'), "eric7plugins")
+
+    globalPluginsDir = os.path.join(getConfig("mdir"), "eric7plugins")
     if os.path.exists(globalPluginsDir):
         pathsToRemove.append(globalPluginsDir)
-    
+
     localPluginsDir = os.path.join(getConfigDir(), "eric7plugins")
     if os.path.exists(localPluginsDir):
         pathsToRemove.append(localPluginsDir)
-    
+
     if pathsToRemove:
         print("Found these plug-in directories")
         for path in pathsToRemove:
@@ -349,9 +375,13 @@
         print("No PyQt variant installed. The configuration directory")
         print("cannot be determined. You have to remove it manually.\n")
         return
-    
-    settings = QSettings(QSettings.Format.IniFormat, QSettings.Scope.UserScope,
-                         settingsNameOrganization, settingsNameGlobal)
+
+    settings = QSettings(
+        QSettings.Format.IniFormat,
+        QSettings.Scope.UserScope,
+        settingsNameOrganization,
+        settingsNameGlobal,
+    )
     settingsDir = os.path.dirname(settings.fileName())
     if os.path.exists(settingsDir):
         print("Found the eric configuration directory")
@@ -367,7 +397,7 @@
 def getConfigDir():
     """
     Module function to get the name of the directory storing the config data.
-    
+
     @return directory name of the config dir (string)
     """
     cdn = ".eric7"
@@ -377,7 +407,7 @@
 def getWinregEntry(name, path):
     """
     Function to get an entry from the Windows Registry.
-    
+
     @param name variable name
     @type str
     @param path registry path of the variable
@@ -387,9 +417,9 @@
     """
     # From http://stackoverflow.com/a/35286642
     import winreg
+
     try:
-        registryKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0,
-                                     winreg.KEY_READ)
+        registryKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, path, 0, winreg.KEY_READ)
         value, _ = winreg.QueryValueEx(registryKey, name)
         winreg.CloseKey(registryKey)
         return value
@@ -400,7 +430,7 @@
 def windowsDesktopNames():
     """
     Function to generate the link names for the Windows Desktop.
-    
+
     @return list of desktop link names
     @rtype list of str
     """
@@ -409,14 +439,14 @@
         "eric7 (Python {0}.{1}).lnk",
         "eric7 Browser (Python {0}.{1}).lnk",
     ]
-    
+
     return [ll.format(majorVersion, minorVersion) for ll in linkTemplates]
 
 
 def windowsProgramsEntry():
     """
     Function to generate the name of the Start Menu top entry.
-    
+
     @return name of the Start Menu top entry
     @rtype str
     """
@@ -448,12 +478,12 @@
     for opt, _arg in optlist:
         if opt == "-h":
             usage(0)
-    
+
     print("\nUninstalling eric ...")
     uninstallEric()
     print("\nUninstallation complete.")
     print()
-    
+
     exit(0)
 
 
@@ -463,10 +493,12 @@
     except SystemExit:
         raise
     except Exception:
-        print("""An internal error occured.  Please report all the output of"""
-              """ the program,\n"""
-              """including the following traceback, to"""
-              """ eric-bugs@eric-ide.python-projects.org.\n""")
+        print(
+            """An internal error occured.  Please report all the output of"""
+            """ the program,\n"""
+            """including the following traceback, to"""
+            """ eric-bugs@eric-ide.python-projects.org.\n"""
+        )
         raise
 
 #

eric ide

mercurial