fix: allow shared CLI flags after subcommands in scan and plan modes
This commit is contained in:
parent
168f0a38ed
commit
4d36198bdd
1 changed files with 44 additions and 14 deletions
|
|
@ -94,10 +94,6 @@ def classify_entries(
|
|||
|
||||
|
||||
def dedupe_entries(entries: Iterable[dict[str, Any]]) -> list[dict[str, Any]]:
|
||||
"""
|
||||
Dedupe primært på path.
|
||||
Første forekomst bevares.
|
||||
"""
|
||||
deduped: list[dict[str, Any]] = []
|
||||
seen: set[str] = set()
|
||||
|
||||
|
|
@ -320,26 +316,61 @@ def run_borg(repo: str, include_paths: list[str], dry_run: bool = False) -> int:
|
|||
|
||||
|
||||
def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
||||
common = argparse.ArgumentParser(add_help=False)
|
||||
common.add_argument("--repo", help="Borg repository path")
|
||||
common.add_argument(
|
||||
"--run-borg",
|
||||
action="store_true",
|
||||
help="Run borg create after building the backup plan",
|
||||
)
|
||||
common.add_argument(
|
||||
"--dry-run",
|
||||
action="store_true",
|
||||
help="Show borg command without executing it",
|
||||
)
|
||||
common.add_argument(
|
||||
"--automation",
|
||||
action="store_true",
|
||||
help="Output machine-readable JSON",
|
||||
)
|
||||
common.add_argument(
|
||||
"--quiet",
|
||||
action="store_true",
|
||||
help="Suppress normal human-readable plan output",
|
||||
)
|
||||
common.add_argument(
|
||||
"--verbose",
|
||||
action="store_true",
|
||||
help="Enable verbose logging",
|
||||
)
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="dockervault",
|
||||
description="Intelligent Docker backup discovery with Borg integration",
|
||||
parents=[common],
|
||||
)
|
||||
|
||||
subparsers = parser.add_subparsers(dest="command")
|
||||
|
||||
plan_parser = subparsers.add_parser("plan", help="Analyze a single compose file")
|
||||
plan_parser = subparsers.add_parser(
|
||||
"plan",
|
||||
help="Analyze a single compose file",
|
||||
parents=[common],
|
||||
)
|
||||
plan_parser.add_argument("compose", help="Path to docker-compose.yml or compose.yaml")
|
||||
|
||||
scan_parser = subparsers.add_parser("scan", help="Scan a directory for compose files")
|
||||
scan_parser = subparsers.add_parser(
|
||||
"scan",
|
||||
help="Scan a directory for compose files",
|
||||
parents=[common],
|
||||
)
|
||||
scan_parser.add_argument("root", help="Root directory to scan")
|
||||
|
||||
parser.add_argument("--repo", help="Borg repository path")
|
||||
parser.add_argument("--run-borg", action="store_true", help="Run borg create after building the backup plan")
|
||||
parser.add_argument("--dry-run", action="store_true", help="Show borg command without executing it")
|
||||
parser.add_argument("--automation", action="store_true", help="Output machine-readable JSON")
|
||||
parser.add_argument("--quiet", action="store_true", help="Suppress normal human-readable plan output")
|
||||
parser.add_argument("--verbose", action="store_true", help="Enable verbose logging")
|
||||
parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}")
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
action="version",
|
||||
version=f"%(prog)s {__version__}",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"legacy_target",
|
||||
|
|
@ -349,7 +380,6 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
|||
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
# legacy mode: dockervault docker-compose.yml
|
||||
if args.command is None and args.legacy_target:
|
||||
args.command = "plan"
|
||||
args.compose = args.legacy_target
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue