Salome HOME
[bos #32522][EDF] SALOME on Demand. Refactored install and remove to fit GUI needs.
authorKonstantin Leontev <konstantin.leontev@opencascade.com>
Fri, 13 Jan 2023 18:10:16 +0000 (21:10 +0300)
committerKonstantin LEONTEV <konstantin.leontev@opencascade.com>
Wed, 8 Mar 2023 12:46:28 +0000 (13:46 +0100)
bin/SalomeOnDemandTK/extension_remover.py
bin/SalomeOnDemandTK/extension_unpacker.py
bin/SalomeOnDemandTK/extension_utilities.py

index 0d3124c5bc1aeaa02cbc1a4eabf68130101d0e32..53c12e83c231a895aa14377f71de656b6abc943b 100644 (file)
@@ -37,8 +37,8 @@ import shutil
 from traceback import format_exc
 
 from .extension_utilities import logger, \
-    DFILE_EXT, CFILE_EXT, SALOME_EXTDIR, \
-    isvalid_dirname, list_dependants, is_empty_dir, find_salomexd, find_salomexc, find_envpy
+    DFILE_EXT, CFILE_EXT, SALOME_EXTDIR, EXTCOMPONENT_KEY, \
+    isvalid_dirname, list_dependants, is_empty_dir, find_salomexd, find_salomexc, find_envpy, value_from_salomexd
 
 
 def remove_if_empty(top_dir, directory):
@@ -131,14 +131,17 @@ def remove_salomex(install_dir, salomex_name):
         salomex_name - a name of salome extension to remove.
 
     Returns:
-        None.
+        List of deleted components or None if the functions fails.
     """
 
     logger.debug('Starting remove a salome extension %s', salomex_name)
 
+    # Return value
+    components = None
+
     # Check if provided dirname is valid
     if not isvalid_dirname(install_dir):
-        return
+        return components
 
     # Check if the given extension is installed
     logger.debug('Check if an extension %s is installed:', salomex_name)
@@ -155,7 +158,7 @@ def remove_salomex(install_dir, salomex_name):
         logger.debug('Cannot find %s for extension %s! '
             'Going to exit from extension removing process.',
             salomexc, salomex_name)
-        return
+        return components
 
     # Check if we cannot remove an extension because of dependencies
     dependants = list_dependants(install_dir, salomex_name)
@@ -163,11 +166,11 @@ def remove_salomex(install_dir, salomex_name):
         logger.error('Cannot remove an extension %s because followed extensions depend on it: %s! '
             'Going to exit from extension removing process.',
             salomex_name, dependants)
-        return
+        return components
 
     # Try to remove all the files listed in the control file
     if not remove_bylist(os.path.join(install_dir, SALOME_EXTDIR), salomexc):
-        return
+        return components
 
     # Remove control file
     os.remove(salomexc)
@@ -181,11 +184,15 @@ def remove_salomex(install_dir, salomex_name):
 
     # Remove description file
     if salomexd:
+        # Get components to deactivate in UI if the case
+        components = value_from_salomexd(salomexd, EXTCOMPONENT_KEY)
         os.remove(salomexd)
 
     logger.debug('An extension %s was removed from %s',
         salomex_name, install_dir)
 
+    return components if components else []
+
 
 if __name__ == '__main__':
     if len(sys.argv) == 3:
index 57a5fe38223a81ca5a45f872f9294ecf80cba7f4..9d53009fc623d6dcf0735aeac97f2aff27c59859 100644 (file)
@@ -104,7 +104,7 @@ def install_salomex(salomex):
         salomex - a given salomex file to unpack.
 
     Returns:
-        A list of components to be activated later.
+        A list of components to be activated later or None if the function failed.
     """
 
     logger.debug('Starting install a salome extension from %s', salomex)
@@ -119,7 +119,7 @@ def install_salomex(salomex):
 
     # Unpack an archive
     if not unpack_salomex(app_root, salomex):
-        return []
+        return None
 
     # Set up an environment
     # It's not clear at the moment what to do if it fails
index eb60bf30ab0b851583cd4b8f7f41863f01ffa19c..330dc8281ec12c39ed71b5e35f937e243ee1be45 100644 (file)
@@ -569,9 +569,9 @@ def set_selext_env(install_dir, salomex_name, context=None):
         return False
 
     # Set env if we have something to set
-    ext_root = os.path.join(install_dir, SALOME_EXTDIR)
+    ext_dir = os.path.join(install_dir, SALOME_EXTDIR)
     if hasattr(envpy_module, 'init'):
-        envpy_module.init(context, ext_root)
+        envpy_module.init(context, ext_dir)
         return True
     else:
         logger.warning('Env file %s doesnt have init func:!', ext_envpy)