Files
cobol-java-v3/main.py
T
2026-05-24 12:36:44 +08:00

46 lines
1.8 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")
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
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()