From 0b0ee69730b7864f3bae1a2ec9aec2c4c1751866 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Wed, 1 Oct 2025 04:53:08 -0400 Subject: [PATCH] [ADD] todo: implement run for mobile compilation and question env - can modify env file to adapt the mobile for the project --- mobile/install_and_run.sh | 4 +- requirement/erplibre_require-ments.txt | 1 + script/todo/todo.py | 78 +++++++++++++++++++++++++- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/mobile/install_and_run.sh b/mobile/install_and_run.sh index 2616f44..a9a9a99 100755 --- a/mobile/install_and_run.sh +++ b/mobile/install_and_run.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash -mobile/install_mobile_dev.sh -mobile/compile_and_run.sh +./mobile/install_mobile_dev.sh +./mobile/compile_and_run.sh diff --git a/requirement/erplibre_require-ments.txt b/requirement/erplibre_require-ments.txt index 13de743..eb949a9 100644 --- a/requirement/erplibre_require-ments.txt +++ b/requirement/erplibre_require-ments.txt @@ -24,6 +24,7 @@ openai humanize requests urwid +python-dotenv python-dateutil unidecode sshconf diff --git a/script/todo/todo.py b/script/todo/todo.py index bf05735..2c09398 100755 --- a/script/todo/todo.py +++ b/script/todo/todo.py @@ -35,6 +35,7 @@ try: from tkinter import filedialog import click + import dotenv import humanize import openai import todo_file_browser @@ -65,6 +66,7 @@ _logger = logging.getLogger(__name__) CONFIG_FILE = "./script/todo/todo.json" CONFIG_OVERRIDE_FILE = "./private/todo/todo.json" LOGO_ASCII_FILE = "./script/todo/logo_ascii.txt" +PATH_MOBILE_PROJECT_HOME = "./mobile/technolibre_home_mobile/technolibre_home" class TODO: @@ -440,6 +442,10 @@ class TODO: command=command, extra_cmd_web_login=extra_cmd_web_login ) + callback = dct_instance.get("callback") + if callback: + callback(dct_instance) + def fill_help_info(self, lst_instance): help_info = "Commande :\n" help_end = "[0] Retour\n" @@ -455,6 +461,14 @@ class TODO: # TODO proposer l'exécution de docker # TODO proposer la création de docker lst_instance = self.config_file.get_config("instance") + init_len = len(lst_instance) + + if os.path.exists(PATH_MOBILE_PROJECT_HOME): + dct_upgrade_odoo_database = { + "prompt_description": "Mobile - Compile and run software", + "callback": self.callback_make_mobile_home, + } + lst_instance.append(dct_upgrade_odoo_database) help_info = self.fill_help_info(lst_instance) while True: @@ -466,7 +480,7 @@ class TODO: cmd_no_found = True try: int_cmd = int(status) - if 0 < int_cmd <= len(lst_instance): + if 0 < int_cmd <= init_len: cmd_no_found = False status = click.confirm( "Voulez-vous une nouvelle instance?" @@ -477,6 +491,12 @@ class TODO: exec_run_db=True, ignore_makefile=not bool(status), ) + elif int_cmd <= len(lst_instance): + # Execute dynamic instance + dct_instance = lst_instance[int_cmd - 1] + self.execute_from_configuration( + dct_instance, + ) except ValueError: pass if cmd_no_found: @@ -1126,6 +1146,62 @@ class TODO: self.dir_path = dir_path todo_file_browser.exit_program() + def callback_make_mobile_home(self, dct_config): + default_project_name = "ERPLibre" + default_project_url_name = "https://erplibre.ca" + default_debug = False + project_name = default_project_name + project_url_name = default_project_url_name + do_debug = default_debug + + do_personalize = input( + "Do you want to personalize the mobile application (Y) : " + ) + if do_personalize.strip().lower() == "y": + project_name = ( + input( + f"Your project name, default {default_project_name} : " + ).strip() + or default_project_name + ) + project_url_name = ( + input( + f"Your project url website, default {default_project_url_name} : " + ).strip() + or default_project_url_name + ) + do_debug = ( + input("Do you want debug information (Y) :").strip().lower() + == "y" + ) + + dotenv_file = dotenv.find_dotenv( + filename=os.path.join( + PATH_MOBILE_PROJECT_HOME, "src", ".env.production" + ) + ) + # dotenv_mobile = dotenv.dotenv_values(dotenv_file) + # dotenv_mobile["VITE_TITLE"] = project_name + # dotenv_mobile["VITE_WEBSITE_URL"] = project_url_name + dotenv.set_key( + dotenv_file, "VITE_TITLE", project_name, quote_mode="always" + ) + dotenv.set_key( + dotenv_file, + "VITE_WEBSITE_URL", + project_url_name, + quote_mode="always", + ) + dotenv.set_key( + dotenv_file, + "VITE_DEBUG_DEV", + "true" if do_debug else "false", + quote_mode="never", + ) + status = self.executer_commande_live( + "./mobile/compile_and_run.sh", source_erplibre=False + ) + if __name__ == "__main__": start_time = time.time()