diff --git a/packages/cli.py b/packages/cli.py index 0e43400..bd5aa16 100644 --- a/packages/cli.py +++ b/packages/cli.py @@ -58,11 +58,12 @@ cmd_packages.add_command(cmd_devices_list, 'devices') @cmd_packages.command(name='update') @click.option('--non-interactive', is_flag=True) -def cmd_update(non_interactive: bool = False): +@click.option('--switch-branch', is_flag=True, help="Force the branch to be corrected even in non-interactive mode") +def cmd_update(non_interactive: bool = False, switch_branch: bool = False): """Update PKGBUILDs git repo""" - init_pkgbuilds(interactive=not non_interactive) + init_pkgbuilds(interactive=not non_interactive, lazy=False, update=True, switch_branch=switch_branch) logging.info("Refreshing SRCINFO caches") - discover_pkgbuilds() + discover_pkgbuilds(lazy=False) # alias "update" to "init" diff --git a/packages/pkgbuild.py b/packages/pkgbuild.py index ccaea89..bb31da2 100644 --- a/packages/pkgbuild.py +++ b/packages/pkgbuild.py @@ -19,7 +19,7 @@ from wrapper import check_programs_wrap from .srcinfo_cache import SrcinfoMetaFile -def clone_pkgbuilds(pkgbuilds_dir: str, repo_url: str, branch: str, interactive=False, update=True): +def clone_pkgbuilds(pkgbuilds_dir: str, repo_url: str, branch: str, interactive=False, update=True, switch_branch: bool = False): check_programs_wrap(['git']) git_dir = os.path.join(pkgbuilds_dir, '.git') if not os.path.exists(git_dir): @@ -31,13 +31,14 @@ def clone_pkgbuilds(pkgbuilds_dir: str, repo_url: str, branch: str, interactive= current_branch = git_get_branch(pkgbuilds_dir) if current_branch != branch: logging.warning(f'pkgbuilds repository is on the wrong branch: {current_branch}, requested: {branch}') - if interactive and click.confirm('Would you like to switch branches?', default=False): + if switch_branch or (interactive and click.confirm('Would you like to switch branches?', default=False)): result = git(['remote', 'update'], dir=pkgbuilds_dir) if result.returncode != 0: raise Exception('failed updating PKGBUILDs branches') result = git(['switch', branch], dir=pkgbuilds_dir) if result.returncode != 0: raise Exception('failed switching PKGBUILDs branches') + if update: if interactive: if not click.confirm('Would you like to try updating the PKGBUILDs repo?'): @@ -50,14 +51,14 @@ def clone_pkgbuilds(pkgbuilds_dir: str, repo_url: str, branch: str, interactive= _pkgbuilds_initialised: bool = False -def init_pkgbuilds(interactive=False, lazy: bool = True): +def init_pkgbuilds(interactive=False, lazy: bool = True, update: bool = False, switch_branch: bool = False): global _pkgbuilds_initialised if lazy and _pkgbuilds_initialised: return pkgbuilds_dir = config.get_path('pkgbuilds') repo_url = config.file.pkgbuilds.git_repo branch = config.file.pkgbuilds.git_branch - clone_pkgbuilds(pkgbuilds_dir, repo_url, branch, interactive=interactive, update=False) + clone_pkgbuilds(pkgbuilds_dir, repo_url, branch, interactive=interactive, update=update, switch_branch=switch_branch) _pkgbuilds_initialised = True