38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Commit the lifecycle cursor for one already-published AI draft batch."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import argparse
|
|
import datetime as dt
|
|
import json
|
|
import sqlite3
|
|
from pathlib import Path
|
|
|
|
from export_ai_session_drafts import mark_published
|
|
from trainlog_sqlite import connect_database
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("artifact", type=Path)
|
|
parser.add_argument("--database", required=True, type=Path)
|
|
args = parser.parse_args()
|
|
try:
|
|
payload = json.loads(args.artifact.read_text(encoding="utf-8"))
|
|
connection = connect_database(args.database)
|
|
try:
|
|
published_at = dt.datetime.now(dt.timezone.utc).isoformat(
|
|
timespec="seconds").replace("+00:00", "Z")
|
|
count = mark_published(connection, payload, published_at)
|
|
finally:
|
|
connection.close()
|
|
print(f"AI_SESSION_DRAFT_PUBLISH_MARK=PASS drafts={count}")
|
|
return 0
|
|
except (OSError, sqlite3.Error, ValueError, json.JSONDecodeError) as error:
|
|
print(f"AI_SESSION_DRAFT_PUBLISH_MARK=FAIL {error}")
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|