| |
| """Export a DrugOps session to CreaDrug24 case pack.""" |
| from __future__ import annotations |
|
|
| import argparse |
| import json |
| import sys |
| from pathlib import Path |
|
|
| UI = Path(__file__).resolve().parents[1] |
| if str(UI) not in sys.path: |
| sys.path.insert(0, str(UI)) |
|
|
| from molgate_ui.creadrug_export import export_session_to_creadrug |
| from molgate_ui.paths import load_env_file |
|
|
|
|
| def main() -> int: |
| load_env_file() |
| ap = argparse.ArgumentParser(description="Export DrugOps session → CreaDrug24 case") |
| ap.add_argument("session_id", help="16-char session id") |
| ap.add_argument("--case-id", help="CreaDrug case id (default M{drug_id} or M_{session8})") |
| ap.add_argument("--no-overwrite", action="store_true", help="fail if case dir exists") |
| ap.add_argument("--json", action="store_true", help="print JSON result") |
| args = ap.parse_args() |
|
|
| result = export_session_to_creadrug( |
| args.session_id, |
| case_id=args.case_id, |
| overwrite=not args.no_overwrite, |
| ) |
| if args.json: |
| print(json.dumps(result, indent=2, ensure_ascii=False)) |
| elif result.get("ok"): |
| print(f"OK case={result['case_id']}") |
| print(f" dir={result['case_dir']}") |
| print(f" registry={result['registry']}") |
| print("Next: push CreaDrug24 to stromapath, open showboard with ?case=" + result["case_id"]) |
| else: |
| print(f"FAIL {result.get('error', 'unknown')}", file=sys.stderr) |
| return 0 if result.get("ok") else 1 |
|
|
|
|
| if __name__ == "__main__": |
| raise SystemExit(main()) |
|
|