File size: 2,357 Bytes
afa0cbf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python3

import argparse
import os
from pathlib import Path
import subprocess


def main() -> None:
    parser = argparse.ArgumentParser(
        description="Regenerate vendored app-server schema fixtures"
    )
    parser.add_argument(
        "--schema-root",
        type=Path,
        help="root directory containing the schema fixtures",
    )
    parser.add_argument(
        "-p",
        "--prettier",
        type=Path,
        help="optional Prettier executable used to format TypeScript files",
    )
    parser.add_argument(
        "--experimental",
        action="store_true",
        help="regenerate the precomputed experimental exports",
    )
    args = parser.parse_args()

    workspace_root = Path(__file__).resolve().parents[2]
    repository_schema_root = workspace_root / "app-server-protocol" / "schema"
    schema_root = args.schema_root or repository_schema_root

    env = os.environ.copy()
    env["CODEX_APP_SERVER_SCHEMA_ROOT"] = str(schema_root)
    env["CODEX_APP_SERVER_SCHEMA_EXPERIMENTAL"] = "1" if args.experimental else "0"
    if args.prettier:
        env["CODEX_APP_SERVER_SCHEMA_PRETTIER"] = str(args.prettier)

    subprocess.run(
        [
            "cargo",
            "test",
            "-p",
            "codex-app-server-protocol",
            "--lib",
            "schema_fixtures_tests::write_schema_fixtures_from_env",
            "--",
            "--exact",
            "--ignored",
        ],
        cwd=workspace_root,
        env=env,
        check=True,
    )

    # Scratch exports and experimental-only bundles do not update checked-in SDK code.
    if (
        not args.experimental
        and schema_root.resolve() == repository_schema_root.resolve()
    ):
        sdk_root = workspace_root.parent / "sdk" / "python"
        subprocess.run(
            [
                "uv",
                "run",
                "--project",
                str(sdk_root),
                "--frozen",
                "--only-group",
                "test",
                "python",
                str(sdk_root / "scripts" / "update_sdk_artifacts.py"),
                "generate-types",
                "--schema-dir",
                str(schema_root / "json"),
            ],
            cwd=workspace_root,
            check=True,
        )


if __name__ == "__main__":
    main()