erplibre/script/database/get_repo_from_module.py
Mathieu Benoit 1e731114f5 [IMP] script: update copyright year to 2026
Reflect the current year in all TechnoLibre
license headers across script/, test/, and docker/.

Generated by Claude Code 2.1.74 model claude-sonnet-4-6

Co-Authored-By: Mathieu Benoit <mathben@technolibre.ca>
2026-03-11 23:16:05 -04:00

80 lines
2 KiB
Python
Executable file

#!/usr/bin/env python3
# © 2021-2026 TechnoLibre (http://www.technolibre.ca)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)
import argparse
import json
import logging
import os
import sys
import zipfile
new_path = os.path.normpath(
os.path.join(os.path.dirname(__file__), "..", "..")
)
sys.path.append(new_path)
from script.execute import execute
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
_logger = logging.getLogger(__name__)
def get_config():
"""Parse command line arguments, extracting the config file name,
returning the union of config file and command line arguments
:return: dict of config file settings and command line arguments
"""
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
description="""\
Extract all repo path from installed module into backup.
Use --backup_path or --backup_name
""",
epilog="""\
""",
)
parser.add_argument("--module", help="Module list separate by ;")
parser.add_argument("--debug", action="store_true")
args = parser.parse_args()
return args
def main():
config = get_config()
lst_module = set(config.module.split(";"))
cmd = "parallel ::: " + " ".join(
[
f"'./script/addons/check_addons_exist.py --output_path -m \"{a}\"'"
for a in lst_module
]
)
execute_cmd = execute.Execute()
status, output = execute_cmd.exec_command_live(
cmd,
quiet=not config.debug,
source_erplibre=False,
single_source_erplibre=True,
return_status_and_output=True,
)
set_path_repo = set()
for line_module_path in output:
line_repo = os.path.dirname(line_module_path)
set_path_repo.add(line_repo)
for path_repo in set_path_repo:
print(path_repo)
def die(cond, message, code=1):
if cond:
print(message, file=sys.stderr)
sys.exit(code)
if __name__ == "__main__":
main()