From f250049cca24d7178cb52569c1da4273884e5aa8 Mon Sep 17 00:00:00 2001
From: Joel Grunbaum <joelgrun@gmail.com>
Date: Tue, 03 Mar 2026 00:47:01 +0000
Subject: [PATCH] Rebuild if in config repo
---
src/archrepobuild/cli.py | 31 +++++++++++++++++++------------
1 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/src/archrepobuild/cli.py b/src/archrepobuild/cli.py
index b60c83d..1941d00 100644
--- a/src/archrepobuild/cli.py
+++ b/src/archrepobuild/cli.py
@@ -117,27 +117,34 @@
@cli.command()
@click.argument("packages", nargs=-1, required=True)
+@click.option(
+ "--include-repo",
+ is_flag=True,
+ default=False,
+ help="Check managed repository for existing packages (skip if present)",
+)
@pass_context
-def add(ctx: Context, packages: tuple[str, ...]) -> None:
+def add(ctx: Context, packages: tuple[str, ...], include_repo: bool) -> None:
"""Add and build new packages from the AUR."""
config = ctx.config
async def _add() -> None:
async with AURClient() as aur:
- async with Builder(config, aur) as builder:
- repo = RepoManager(config)
-
+ repo = RepoManager(config)
+ async with Builder(config, aur, repo=repo) as builder:
results = []
for package in packages:
console.print(f"[bold blue]Adding package:[/] {package}")
- result = await builder.add_package(package)
+ result = await builder.add_package(package, include_repo=include_repo)
results.append(result)
if result.status == BuildStatus.SUCCESS:
- repo.add_packages(result)
- console.print(f"[green]✓[/] {package} added successfully")
+ if len(result.artifacts) > 1:
+ console.print(f"[green]✓[/] {package} processed successfully ({len(result.artifacts)} artifacts registered)")
+ else:
+ console.print(f"[green]✓[/] {package} processed successfully")
elif result.status == BuildStatus.SKIPPED:
- console.print(f"[yellow]⏭[/] {package} skipped (already in official repos or installed)")
+ console.print(f"[yellow]⏭[/] {package} skipped (already in managed repository)")
else:
console.print(f"[red]✗[/] {package} failed: {result.error}")
@@ -165,8 +172,8 @@
resolver = DependencyResolver(aur)
for pkg in repo.list_packages():
- if resolver.is_in_official_repos(pkg.name):
- console.print(f"[yellow]Removing {pkg.name}[/] (now in official repos)")
+ if resolver.is_in_repos(pkg.name):
+ console.print(f"[yellow]Removing {pkg.name}[/] (now in repositories)")
builder.remove_package(pkg.name)
repo.remove_package(pkg.name)
else:
@@ -200,10 +207,10 @@
# Ignore debug packages if the regular version is in official repos
if pkg.name.endswith("-debug"):
base_name = pkg.name[:-6]
- if resolver.is_in_official_repos(base_name, include_all=all_repos):
+ if resolver.is_in_repos(base_name, include_all=all_repos) or await aur.is_available(base_name):
continue
- if resolver.is_in_official_repos(pkg.name, include_all=all_repos):
+ if resolver.is_in_repos(pkg.name, include_all=all_repos):
in_official.append(pkg.name)
elif not await aur.is_available(pkg.name):
not_in_aur.append(pkg.name)
--
Gitblit v1.10.0