Files
cobol-java-v3/main.py

51 lines
2.1 KiB
Python

import argparse, sys
from config import Config
from orchestrator import run_pipeline
def main():
p = argparse.ArgumentParser(description="COBOL->Java/Spark Migration Verification")
p.add_argument("--copybook", required=True)
p.add_argument("--cobol-src", required=True)
p.add_argument("--java-src", required=True)
p.add_argument("--mapping", required=True)
p.add_argument("--runner", choices=["native", "spark"], default="native")
p.add_argument("--coverage", choices=["boundary", "branch"], default="boundary")
p.add_argument("--tolerance", type=float, default=0.01)
p.add_argument("--verbose", action="store_true")
p.add_argument("--dry-run", action="store_true")
p.add_argument("--output-dir", default="./reports")
p.add_argument("--quality-gate-mode", choices=["warn", "off"], default="warn",
help="质量门禁模式: warn=记录警告, off=关闭")
p.add_argument("--gcov", action="store_true", help="启用 gcov 覆盖率采集")
args = p.parse_args()
if args.dry_run:
from pathlib import Path
issues = []
for lb, pt in [("copybook", args.copybook), ("cobol-src", args.cobol_src), ("mapping", args.mapping)]:
if not Path(pt).exists():
issues.append(f" {lb}: {pt} (not found)")
if not Path(f"{args.java_src}/pom.xml").exists():
issues.append(f" java-src: {args.java_src}/pom.xml (not found)")
if issues:
print("DRY-RUN issues:\n" + "\n".join(issues))
sys.exit(2)
print("DRY-RUN: all inputs OK")
sys.exit(0)
c = Config()
c.runner_mode = args.runner
c.coverage_default = args.coverage
c.tolerance = args.tolerance
c.quality_gate_mode = args.quality_gate_mode
c.gcov_enabled = args.gcov
vr = run_pipeline(c, args.copybook, args.cobol_src, args.java_src, args.mapping)
t = vr.fields_matched + vr.fields_mismatched
print(f"{vr.program}: {vr.status} ({vr.fields_matched}/{t}, {vr.duration_s:.0f}s)" if t else f"{vr.program}: {vr.status}")
sys.exit(vr.exit_code)
if __name__ == "__main__":
main()