Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ __pycache__/
.gemini/
.docker-compose.scale.yml
plugins.yml
repos/
plugins/*/
!plugins/.gitkeep
projects/*
Expand Down
2 changes: 2 additions & 0 deletions lib/devbase/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ def _add_plugin_parser(subparsers):

r_remove = pl_repo_sub.add_parser('remove', help='Unregister a repository')
r_remove.add_argument('name', help='Repository name')
r_remove.add_argument('--force', action='store_true',
help='Force removal even if repo has uncommitted/unpushed changes')

pl_repo_sub.add_parser('list', help='List repositories')

Expand Down
9 changes: 7 additions & 2 deletions lib/devbase/commands/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,8 @@ def cmd_repo(devbase_root: Path, args) -> int:

handlers = {
'add': lambda: add_repository(registry, args.url, name=args.name),
'remove': lambda: remove_repository(registry, args.name),
'remove': lambda: remove_repository(registry, args.name,
force=getattr(args, 'force', False)),
'list': lambda: show_repositories(registry),
'refresh': lambda: _repo_refresh(registry, args),
}
Expand Down Expand Up @@ -181,9 +182,13 @@ def _repo_refresh(registry, args):
errors = []
for repo in repos:
try:
refresh_repository(registry, repo.name)
refresh_repository(registry, repo.name, sync=False)
except DevbaseError as e:
logger.error("%s", e)
errors.append(str(e))

# Sync once after all repos are refreshed (instead of per-repo)
sync_projects(registry)

if errors:
raise DevbaseError(f"{len(errors)} repository refresh(es) failed")
Loading