X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=commands%2Fprepare.py;h=bdacf4fe486d0396c8b2fc5a702f3cff62b23e71;hb=7380b51b4b836a68498df1d118f644986fef08f6;hp=7e18a2faf6441affb67ed21630d95b84d5ab2515;hpb=747e97f705b1477bb5600dfc796bb29b00a15b1f;p=tools%2Fsat.git diff --git a/commands/prepare.py b/commands/prepare.py index 7e18a2f..bdacf4f 100644 --- a/commands/prepare.py +++ b/commands/prepare.py @@ -17,18 +17,19 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import re +import os import src # Define all possible option for prepare command : sat prepare parser = src.options.Options() parser.add_option('p', 'products', 'list2', 'products', - _('products to prepare. This option can be' + _('Optional: products to prepare. This option can be' ' passed several time to prepare several products.')) parser.add_option('f', 'force', 'boolean', 'force', - _("force to prepare the products in development mode.")) -parser.add_option('f', 'force_patch', 'boolean', 'force_patch', - _("force to apply patch to the products in development mode.")) + _("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.")) def get_products_list(options, cfg, logger): '''method that gives the product list with their informations from @@ -62,7 +63,7 @@ def get_products_list(options, cfg, logger): return products_infos def remove_products(arguments, l_products_info, logger): - '''method that removes the products in l_products_info from arguments list. + '''function that removes the products in l_products_info from arguments list. :param arguments str: The arguments from which to remove products :param l_products_info list: List of @@ -80,6 +81,37 @@ def remove_products(arguments, l_products_info, logger): logger.write(product_name + end_text, 1) return args +def find_products_already_getted(l_products): + '''function that returns the list of products that have an existing source + directory. + + :param l_products List: The list of products to check + :return: The list of product configurations that have an existing source + directory. + :rtype: List + ''' + l_res = [] + for p_name_p_cfg in l_products: + __, prod_cfg = p_name_p_cfg + if os.path.exists(prod_cfg.source_dir): + l_res.append(p_name_p_cfg) + return l_res + +def find_products_with_patchs(l_products): + '''function that returns the list of products that have one or more patches. + + :param l_products List: The list of products to check + :return: The list of product configurations that have one or more patches. + :rtype: List + ''' + l_res = [] + for p_name_p_cfg in l_products: + __, prod_cfg = p_name_p_cfg + l_patchs = src.get_cfg_param(prod_cfg, "patches", []) + if len(l_patchs)>0: + l_res.append(p_name_p_cfg) + return l_res + def description(): '''method that is called when salomeTools is called with --help option. @@ -87,7 +119,8 @@ def description(): :rtype: str ''' return _("The prepare command gets the sources of " - "the application products and apply the patches if there is any.") + "the application products and apply the patches if there is any." + "\n\nexample:\nsat prepare SALOME-master --products KERNEL,GUI") def run(args, runner, logger): '''method that is called when salomeTools is called with prepare parameter. @@ -114,26 +147,30 @@ def run(args, runner, logger): ldev_products = [p for p in products_infos if src.product.product_is_dev(p[1])] args_product_opt_clean = args_product_opt if not options.force and len(ldev_products) > 0: - msg = _("Do not get the source of the following products " - "in development mode\nUse the --force option to" - " overwrite it.\n") - logger.write(src.printcolors.printcWarning(msg), 1) - args_product_opt_clean = remove_products(args_product_opt_clean, - ldev_products, - logger) - logger.write("\n", 1) + l_products_not_getted = find_products_already_getted(ldev_products) + if len(l_products_not_getted) > 0: + msg = _("Do not get the source of the following products " + "in development mode\nUse the --force option to" + " overwrite it.\n") + logger.write(src.printcolors.printcWarning(msg), 1) + args_product_opt_clean = remove_products(args_product_opt_clean, + l_products_not_getted, + logger) + logger.write("\n", 1) args_product_opt_patch = args_product_opt if not options.force_patch and len(ldev_products) > 0: - msg = _("do not patch the following products " - "in development mode\nUse the --force_patch option to" - " overwrite it.\n") - logger.write(src.printcolors.printcWarning(msg), 1) - args_product_opt_patch = remove_products(args_product_opt_patch, - ldev_products, - logger) - logger.write("\n", 1) + l_products_with_patchs = find_products_with_patchs(ldev_products) + if len(l_products_with_patchs) > 0: + msg = _("do not patch the following products " + "in development mode\nUse the --force_patch option to" + " overwrite it.\n") + logger.write(src.printcolors.printcWarning(msg), 1) + args_product_opt_patch = remove_products(args_product_opt_patch, + l_products_with_patchs, + logger) + logger.write("\n", 1) # Construct the final commands arguments args_clean = args_appli + args_product_opt_clean + " --sources" @@ -157,12 +194,30 @@ def run(args, runner, logger): if do_clean: msg = _("Clean the source directories ...") logger.write(msg, 3) - res_clean = runner.clean(args_clean, batch=True, verbose = 0) + logger.flush() + res_clean = runner.clean(args_clean, batch=True, verbose = 0, + logger_add_link = logger) if res_clean == 0: - logger.write('%s\n\n' % src.printcolors.printc(src.OK_STATUS), 3) + logger.write('%s\n' % src.printcolors.printc(src.OK_STATUS), 3) + else: + logger.write('%s\n' % src.printcolors.printc(src.KO_STATUS), 3) if do_source: - res_source = runner.source(args_source) + msg = _("Get the sources of the products ...") + logger.write(msg, 5) + res_source = runner.source(args_source, + logger_add_link = logger) + if res_source == 0: + logger.write('%s\n' % src.printcolors.printc(src.OK_STATUS), 5) + else: + logger.write('%s\n' % src.printcolors.printc(src.KO_STATUS), 5) if do_patch: - res_patch = runner.patch(args_patch) + msg = _("Patch the product sources (if any) ...") + logger.write(msg, 5) + res_patch = runner.patch(args_patch, + logger_add_link = logger) + if res_patch == 0: + logger.write('%s\n' % src.printcolors.printc(src.OK_STATUS), 5) + else: + logger.write('%s\n' % src.printcolors.printc(src.KO_STATUS), 5) return res_clean + res_source + res_patch \ No newline at end of file