From 0f3b37f28ff37d3a43e925b440eb363314699049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Rinc=C3=B3n=20Blanco?= Date: Tue, 14 May 2024 16:09:29 +0200 Subject: [PATCH 1/2] first sketch for custom command to help with airgapped envs in backupo sources --- extensions/commands/x/cmd_backups.py | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 extensions/commands/x/cmd_backups.py diff --git a/extensions/commands/x/cmd_backups.py b/extensions/commands/x/cmd_backups.py new file mode 100644 index 0000000..ac5dc3f --- /dev/null +++ b/extensions/commands/x/cmd_backups.py @@ -0,0 +1,41 @@ +import os +import shutil +import json + +from conan.api.output import ConanOutput +from conan.cli.command import conan_command +from conans.errors import ConanException +from conans.util.dates import timestamp_now +from conans.util.sha import sha256 + + +@conan_command(group="Backup sources handling") +def backups(conan_api, parser, *args): + """ + This command will upload the backup sources of a package to the server. + """ + parser.add_argument("reference", help="Reference of the package to backup") + parser.add_argument("path", help="Path to source files for this reference") + parser.add_argument("--url", help="Original URL of the file", default=None) + args = parser.parse_args(*args) + + if not os.path.isfile(args.path): + raise ConanException(f"File not found: {args.path}") + + with open(args.path, "rb") as f: + checksum = sha256(f.read()) + + ConanOutput().info(f"Calculated checksum: {checksum}") + new_path = os.path.join(os.path.dirname(args.path), checksum) + json_path = new_path + ".json" + shutil.move(args.path, new_path) + try: + with open(json_path, "w") as f: + json.dump({"references": {args.reference: [args.url] if args.url else []}, + "timestamp": timestamp_now()}, f) + + conan_api.upload.upload_backup_sources([new_path, json_path]) + finally: + shutil.move(new_path, args.path) + if os.path.isfile(json_path): + os.remove(json_path) \ No newline at end of file From 15f5b0ca78469d0a90d65a1833df955b20da3d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Rinc=C3=B3n=20Blanco?= Date: Thu, 6 Jun 2024 20:54:34 +0200 Subject: [PATCH 2/2] Update extensions/commands/x/cmd_backups.py Co-authored-by: Uilian Ries --- extensions/commands/x/cmd_backups.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/commands/x/cmd_backups.py b/extensions/commands/x/cmd_backups.py index ac5dc3f..bb66be8 100644 --- a/extensions/commands/x/cmd_backups.py +++ b/extensions/commands/x/cmd_backups.py @@ -4,7 +4,7 @@ from conan.api.output import ConanOutput from conan.cli.command import conan_command -from conans.errors import ConanException +from conan.errors import ConanException from conans.util.dates import timestamp_now from conans.util.sha import sha256