Pulse/scripts/check-workflow-dispatch-inputs.py

44 lines
1.3 KiB
Python
Executable file

#!/usr/bin/env python3
"""Validate that a selected remote branch copy of a workflow accepts required inputs."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
SCRIPT_DIR = Path(__file__).resolve().parent
sys.path.insert(0, str(SCRIPT_DIR / "release_control"))
from release_promotion_policy_support import missing_workflow_dispatch_inputs
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
parser.add_argument("--workflow-path", required=True)
parser.add_argument("--branch", default="")
parser.add_argument("--require", action="append", default=[])
return parser.parse_args()
def main() -> int:
args = parse_args()
branch, missing = missing_workflow_dispatch_inputs(
workflow_path=args.workflow_path,
required_inputs=tuple(args.require),
branch=args.branch or None,
)
if missing:
missing_display = ", ".join(missing)
raise SystemExit(
f"workflow contract drift: origin/{branch}:{args.workflow_path} "
f"is missing workflow_dispatch inputs: {missing_display}"
)
print(
f"[OK] origin/{branch}:{args.workflow_path} accepts required workflow_dispatch inputs"
)
return 0
if __name__ == "__main__":
raise SystemExit(main())