Salome HOME
sat #8597 : implémentation d'un mode completion pour prepare
authorcrouzet <nicolas.crouzet@cea.fr>
Fri, 1 Feb 2019 14:13:23 +0000 (15:13 +0100)
committercrouzet <nicolas.crouzet@cea.fr>
Fri, 1 Feb 2019 14:13:23 +0000 (15:13 +0100)
commands/prepare.py
complete_sat.sh
doc/src/commands/prepare.rst

index b182a1b118834e121623fa4708798b93d9414124..2fb83887c7dc9139daab7354df68255dd91577ea 100644 (file)
@@ -32,9 +32,12 @@ parser.add_option('f', 'force', 'boolean', 'force',
     _("Optional: force to prepare the products in development mode."))
 parser.add_option('', 'force_patch', 'boolean', 'force_patch', 
     _("Optional: force to apply patch to the products in development mode."))
+parser.add_option('c', 'complete', 'boolean', 'complete',
+    _("Optional: completion mode, only prepare products not present in SOURCES dir."),
+    False)
 
 
-def find_products_already_getted(l_products):
+def find_products_already_prepared(l_products):
     '''function that returns the list of products that have an existing source 
        directory.
     
@@ -94,7 +97,21 @@ def run(args, runner, logger):
     else: # no product interpeted as all products
         listProd = [name for name, tmp in products_infos]
 
-    DBG.write("prepare products", sorted(listProd))
+    if options.complete:
+        # remove products that are already prepared 'completion mode)
+        pi_already_prepared=find_products_already_prepared(products_infos)
+        l_already_prepared = [i for i, tmp in pi_already_prepared]
+        newList, removedList = removeInList(listProd, l_already_prepared)
+        listProd = newList
+        if len(newList) == 0 and len(removedList) > 0 :
+            msg = "\nAll the products are already installed, do nothing!\n"
+            logger.write(src.printcolors.printcWarning(msg), 1)
+            return 0
+        if len(removedList) > 0 :
+            msg = "\nList of already prepared products that are skipped : %s\n" % ",".join(removedList)
+            logger.write(msg, 3)
+        
+
     args_product_opt = '--products ' + ",".join(listProd)
     do_source = (len(listProd) > 0)
 
@@ -102,7 +119,7 @@ def run(args, runner, logger):
     ldev_products = [p for p in products_infos if src.product.product_is_dev(p[1])]
     newList = listProd # default
     if not options.force and len(ldev_products) > 0:
-        l_products_not_getted = find_products_already_getted(ldev_products)
+        l_products_not_getted = find_products_already_prepared(ldev_products)
         listNot = [i for i, tmp in l_products_not_getted]
         newList, removedList = removeInList(listProd, listNot)
         if len(removedList) > 0:
index 15a0c551aebf9796c796c60422c86571725b7fbb..ca3a131faadec6a186d9fe9f6f1e7a8f9de8f5e8 100755 (executable)
@@ -182,7 +182,7 @@ _salomeTools_complete()
             return 0
             ;;
         prepare)
-            opts="--products --properties --force --force_patch"
+            opts="--products --properties --force --force_patch --complete"
             COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
             return 0
             ;;
index a28fdae48b66f2aaacb6eece22251399f59c4159..f67dec0d531a2bc895b15d05830a3fa865c83a50 100644 (file)
@@ -79,6 +79,12 @@ Usage
 
     sat prepare <application> --force_patch
 
+* Prepare only products that are not present in SOURCES.
+  This completion mode is used to complete the preparation when it was interrupted, 
+  or when the product list was increased: ::
+
+    sat prepare <application> --complete
+
 
 Some useful configuration pathes
 =================================