74 lines
2 KiB
Python
74 lines
2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
from open_reuse.validate import run_validate
|
||
|
|
|
||
|
|
|
||
|
|
def _build_parser() -> argparse.ArgumentParser:
|
||
|
|
parser = argparse.ArgumentParser(prog="open-reuse")
|
||
|
|
subparsers = parser.add_subparsers(dest="command", required=True)
|
||
|
|
|
||
|
|
validate = subparsers.add_parser(
|
||
|
|
"validate",
|
||
|
|
help="Validate integration definitions and registry index",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"paths",
|
||
|
|
nargs="*",
|
||
|
|
type=Path,
|
||
|
|
help="Integration definition files (default: registry/integrations/*.integration.yaml)",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"--root",
|
||
|
|
type=Path,
|
||
|
|
default=None,
|
||
|
|
help="open-reuse repository root (auto-detected when omitted)",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"--repos-base",
|
||
|
|
type=Path,
|
||
|
|
default=None,
|
||
|
|
help="Base directory containing consuming repos for external definition checks",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"--no-index",
|
||
|
|
action="store_true",
|
||
|
|
help="Skip indexes/integrations.yaml checks",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"--indexed-only",
|
||
|
|
action="store_true",
|
||
|
|
help="When checking index, skip local definition drift warnings",
|
||
|
|
)
|
||
|
|
validate.add_argument(
|
||
|
|
"--fail-on-warnings",
|
||
|
|
action="store_true",
|
||
|
|
help="Exit non-zero when promotion-gate warnings are present",
|
||
|
|
)
|
||
|
|
return parser
|
||
|
|
|
||
|
|
|
||
|
|
def main(argv: list[str] | None = None) -> int:
|
||
|
|
parser = _build_parser()
|
||
|
|
args = parser.parse_args(argv)
|
||
|
|
|
||
|
|
if args.command == "validate":
|
||
|
|
targets = args.paths or None
|
||
|
|
return run_validate(
|
||
|
|
root=args.root,
|
||
|
|
targets=targets,
|
||
|
|
repos_base=args.repos_base,
|
||
|
|
fail_on_warnings=args.fail_on_warnings,
|
||
|
|
check_index=not args.no_index,
|
||
|
|
indexed_only=args.indexed_only,
|
||
|
|
)
|
||
|
|
|
||
|
|
parser.error(f"unknown command: {args.command}")
|
||
|
|
return 2
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
raise SystemExit(main())
|