From 69845e9b86f94dbb53e6bc501d96c2e7399ff6d6 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Mon, 21 Apr 2025 13:26:24 +0200 Subject: [PATCH] Added clone mode to update --- main.py | 20 +++++++++++++++----- pkgmgr/clone_repos.py | 9 ++++++++- pkgmgr/install_repos.py | 14 ++++++++++++-- pkgmgr/update_repos.py | 41 +++++++++++++++++++++++++++++++++-------- 4 files changed, 68 insertions(+), 16 deletions(-) diff --git a/main.py b/main.py index 05dce18..f87e52c 100755 --- a/main.py +++ b/main.py @@ -240,7 +240,16 @@ For detailed help on each command, use: # Dispatch commands. if args.command == "install": - install_repos(selected, REPOSITORIES_BASE_DIR, BINARIES_DIRECTORY, ALL_REPOSITORIES, args.no_verification, preview=args.preview, quiet=args.quiet, clone_mode=args.clone_mode) + install_repos( + selected, + REPOSITORIES_BASE_DIR, + BINARIES_DIRECTORY, + ALL_REPOSITORIES, + args.no_verification, + args.preview, + args.quiet, + args.clone_mode + ) elif args.command == "create": from pkgmgr.create_repo import create_repo # If no identifiers are provided, you can decide to either use the repository of the current folder @@ -265,10 +274,11 @@ For detailed help on each command, use: BINARIES_DIRECTORY, ALL_REPOSITORIES, args.no_verification, - system_update=args.system, - preview=args.preview, - quiet=args.quiet, - update_dependencies=args.dependencies + args.system, + args.preview, + args.quiet, + args.dependencies, + args.clone_mode ) elif args.command == "release": if not selected: diff --git a/pkgmgr/clone_repos.py b/pkgmgr/clone_repos.py index 9c0bc0e..034fd8a 100644 --- a/pkgmgr/clone_repos.py +++ b/pkgmgr/clone_repos.py @@ -4,7 +4,14 @@ from pkgmgr.get_repo_dir import get_repo_dir from pkgmgr.get_repo_identifier import get_repo_identifier from pkgmgr.verify import verify_repository -def clone_repos(selected_repos, repositories_base_dir: str, all_repos, preview: bool, no_verification: bool, clone_mode: str = "ssh"): +def clone_repos( + selected_repos, + repositories_base_dir: str, + all_repos, + preview: bool, + no_verification: bool, + clone_mode: str + ): for repo in selected_repos: repo_identifier = get_repo_identifier(repo, all_repos) repo_dir = get_repo_dir(repositories_base_dir, repo) diff --git a/pkgmgr/install_repos.py b/pkgmgr/install_repos.py index a1f65f9..c82d2f7 100644 --- a/pkgmgr/install_repos.py +++ b/pkgmgr/install_repos.py @@ -10,7 +10,17 @@ from pkgmgr.run_command import run_command from pkgmgr.verify import verify_repository from pkgmgr.clone_repos import clone_repos -def install_repos(selected_repos, repositories_base_dir, bin_dir, all_repos, no_verification, preview=False, quiet=False, clone_mode: str = "ssh", update_dependencies: bool = True): +def install_repos( + selected_repos, + repositories_base_dir, + bin_dir, + all_repos, + no_verification, + preview, + quiet, + clone_mode: str, + update_dependencies: bool + ): """ Install repositories by creating symbolic links, running setup commands, and installing additional packages if a requirements.yml or requirements.txt file is found. @@ -21,7 +31,7 @@ def install_repos(selected_repos, repositories_base_dir, bin_dir, all_repos, no_ if not os.path.exists(repo_dir): print(f"Repository directory '{repo_dir}' does not exist. Cloning it now...") # Pass the clone_mode parameter to clone_repos - clone_repos([repo], repositories_base_dir, all_repos, preview, no_verification, clone_mode=clone_mode) + clone_repos([repo], repositories_base_dir, all_repos, preview, no_verification, clone_mode) if not os.path.exists(repo_dir): print(f"Cloning failed for repository {repo_identifier}. Skipping installation.") continue diff --git a/pkgmgr/update_repos.py b/pkgmgr/update_repos.py index 32a29a4..e6fd5cf 100644 --- a/pkgmgr/update_repos.py +++ b/pkgmgr/update_repos.py @@ -2,21 +2,46 @@ import sys from pkgmgr.pull_with_verification import pull_with_verification from pkgmgr.install_repos import install_repos -def update_repos(selected_repos, repositories_base_dir, bin_dir, all_repos, no_verification, system_update=False, preview=False, quiet=False, update_dependencies=False): - +def update_repos( + selected_repos, + repositories_base_dir, + bin_dir, + all_repos, + no_verification, + system_update, + preview: bool, + quiet: bool, + update_dependencies: bool, + clone_mode: str): + """ + Update repositories by pulling latest changes and installing them. + + Parameters: + - selected_repos: List of selected repositories. + - repositories_base_dir: Base directory for repositories. + - bin_dir: Directory for symbolic links. + - all_repos: All repository configurations. + - no_verification: Whether to skip verification. + - system_update: Whether to run system update. + - preview: If True, only show commands without executing. + - quiet: If True, suppress messages. + - update_dependencies: Whether to update dependent repositories. + - clone_mode: Method to clone repositories (ssh or https). + """ pull_with_verification(selected_repos, repositories_base_dir, all_repos, extra_args=[], no_verification=no_verification, preview=preview) - + install_repos( selected_repos, repositories_base_dir, bin_dir, all_repos, - no_verification=no_verification, - preview=preview, - quiet=quiet, - update_dependencies=update_dependencies + no_verification, + preview, + quiet, + update_dependencies, + clone_mode ) - + if system_update: from pkgmgr.run_command import run_command run_command("yay -Syu", preview=preview)