Added clone mode to update

This commit is contained in:
Kevin Veen-Birkenbach
2025-04-21 13:26:24 +02:00
parent 6541ca94bd
commit 69845e9b86
4 changed files with 68 additions and 16 deletions

20
main.py
View File

@@ -240,7 +240,16 @@ For detailed help on each command, use:
# Dispatch commands. # Dispatch commands.
if args.command == "install": 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": elif args.command == "create":
from pkgmgr.create_repo import create_repo from pkgmgr.create_repo import create_repo
# If no identifiers are provided, you can decide to either use the repository of the current folder # 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, BINARIES_DIRECTORY,
ALL_REPOSITORIES, ALL_REPOSITORIES,
args.no_verification, args.no_verification,
system_update=args.system, args.system,
preview=args.preview, args.preview,
quiet=args.quiet, args.quiet,
update_dependencies=args.dependencies args.dependencies,
args.clone_mode
) )
elif args.command == "release": elif args.command == "release":
if not selected: if not selected:

View File

@@ -4,7 +4,14 @@ from pkgmgr.get_repo_dir import get_repo_dir
from pkgmgr.get_repo_identifier import get_repo_identifier from pkgmgr.get_repo_identifier import get_repo_identifier
from pkgmgr.verify import verify_repository 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: for repo in selected_repos:
repo_identifier = get_repo_identifier(repo, all_repos) repo_identifier = get_repo_identifier(repo, all_repos)
repo_dir = get_repo_dir(repositories_base_dir, repo) repo_dir = get_repo_dir(repositories_base_dir, repo)

View File

@@ -10,7 +10,17 @@ from pkgmgr.run_command import run_command
from pkgmgr.verify import verify_repository from pkgmgr.verify import verify_repository
from pkgmgr.clone_repos import clone_repos 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 Install repositories by creating symbolic links, running setup commands, and
installing additional packages if a requirements.yml or requirements.txt file is found. 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): if not os.path.exists(repo_dir):
print(f"Repository directory '{repo_dir}' does not exist. Cloning it now...") print(f"Repository directory '{repo_dir}' does not exist. Cloning it now...")
# Pass the clone_mode parameter to clone_repos # 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): if not os.path.exists(repo_dir):
print(f"Cloning failed for repository {repo_identifier}. Skipping installation.") print(f"Cloning failed for repository {repo_identifier}. Skipping installation.")
continue continue

View File

@@ -2,8 +2,32 @@ import sys
from pkgmgr.pull_with_verification import pull_with_verification from pkgmgr.pull_with_verification import pull_with_verification
from pkgmgr.install_repos import install_repos 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) pull_with_verification(selected_repos, repositories_base_dir, all_repos, extra_args=[], no_verification=no_verification, preview=preview)
install_repos( install_repos(
@@ -11,10 +35,11 @@ def update_repos(selected_repos, repositories_base_dir, bin_dir, all_repos, no_v
repositories_base_dir, repositories_base_dir,
bin_dir, bin_dir,
all_repos, all_repos,
no_verification=no_verification, no_verification,
preview=preview, preview,
quiet=quiet, quiet,
update_dependencies=update_dependencies update_dependencies,
clone_mode
) )
if system_update: if system_update: