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