Skip to content

Commit 62293fc

Browse files
committed
Fix schema publish workflow constant resolution
1 parent e99b74c commit 62293fc

1 file changed

Lines changed: 49 additions & 22 deletions

File tree

.github/workflows/publish-schema.yml

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,56 @@ jobs:
3030
shell: bash
3131
run: |
3232
set -euo pipefail
33+
eval "$(
34+
python - <<'PY'
35+
import re
36+
from pathlib import Path
37+
38+
raw = Path("internal/schema/constants.go").read_text(encoding="utf-8")
39+
const_match = re.search(r"const\s*\((.*?)\n\)", raw, re.S)
40+
if not const_match:
41+
raise SystemExit("failed to find const block in internal/schema/constants.go")
42+
43+
values = {}
44+
for line in const_match.group(1).splitlines():
45+
line = line.strip()
46+
if not line or line.startswith("//"):
47+
continue
48+
match = re.match(r"([A-Za-z0-9_]+)\s*=\s*(.+)", line)
49+
if not match:
50+
continue
51+
name, value = match.groups()
52+
values[name] = value.strip()
53+
54+
def resolve(name):
55+
if name not in values:
56+
raise KeyError(name)
57+
value = values[name]
58+
if value.startswith('"') and value.endswith('"'):
59+
return value[1:-1]
60+
return resolve(value)
61+
62+
out = {
63+
"MODEL_SCHEMA_VERSION": resolve("ExpectedSchemaVersion"),
64+
"MODEL_SCHEMA_URI": resolve("ExpectedSchemaURI"),
65+
"MODEL_SCHEMA_DIGEST": resolve("ExpectedSchemaDigest"),
66+
"SNAPSHOT_SCHEMA_VERSION": resolve("ExpectedSnapshotSchemaVersion"),
67+
"SNAPSHOT_SCHEMA_URI": resolve("ExpectedSnapshotSchemaURI"),
68+
"SNAPSHOT_SCHEMA_DIGEST": resolve("ExpectedSnapshotSchemaDigest"),
69+
}
70+
71+
for key, value in out.items():
72+
escaped = value.replace("\\", "\\\\").replace('"', '\\"')
73+
print(f'{key}="{escaped}"')
74+
PY
75+
)"
3376
34-
extract_const() {
35-
local key="$1"
36-
grep -E "^[[:space:]]*${key}[[:space:]]*=" internal/schema/constants.go | sed -E 's/.*"([^"]+)".*/\1/'
37-
}
38-
39-
MODEL_SCHEMA_VERSION="$(extract_const ExpectedSchemaVersion)"
40-
MODEL_SCHEMA_URI="$(extract_const ExpectedSchemaURI)"
41-
MODEL_SCHEMA_DIGEST="$(extract_const ExpectedSchemaDigest)"
42-
SNAPSHOT_SCHEMA_VERSION="$(extract_const ExpectedSnapshotSchemaVersion)"
43-
SNAPSHOT_SCHEMA_URI="$(extract_const ExpectedSnapshotSchemaURI)"
44-
SNAPSHOT_SCHEMA_DIGEST="$(extract_const ExpectedSnapshotSchemaDigest)"
45-
46-
if [[ -z "${MODEL_SCHEMA_VERSION}" || -z "${MODEL_SCHEMA_URI}" || -z "${MODEL_SCHEMA_DIGEST}" || -z "${SNAPSHOT_SCHEMA_VERSION}" || -z "${SNAPSHOT_SCHEMA_URI}" || -z "${SNAPSHOT_SCHEMA_DIGEST}" ]]; then
47-
echo "failed to resolve schema constants from internal/schema/constants.go"
48-
exit 1
49-
fi
77+
echo "model_schema_version=${MODEL_SCHEMA_VERSION}" >> "${GITHUB_OUTPUT}"
78+
echo "model_schema_uri=${MODEL_SCHEMA_URI}" >> "${GITHUB_OUTPUT}"
79+
echo "model_schema_digest=${MODEL_SCHEMA_DIGEST}" >> "${GITHUB_OUTPUT}"
80+
echo "snapshot_schema_version=${SNAPSHOT_SCHEMA_VERSION}" >> "${GITHUB_OUTPUT}"
81+
echo "snapshot_schema_uri=${SNAPSHOT_SCHEMA_URI}" >> "${GITHUB_OUTPUT}"
82+
echo "snapshot_schema_digest=${SNAPSHOT_SCHEMA_DIGEST}" >> "${GITHUB_OUTPUT}"
5083
5184
if [[ "${GITHUB_EVENT_NAME}" == "push" ]]; then
5285
if [[ "${GITHUB_REF_NAME}" != schema-v* ]]; then
@@ -62,12 +95,6 @@ jobs:
6295
TAG_VERSION="${MODEL_SCHEMA_VERSION}"
6396
fi
6497
65-
echo "model_schema_version=${MODEL_SCHEMA_VERSION}" >> "${GITHUB_OUTPUT}"
66-
echo "model_schema_uri=${MODEL_SCHEMA_URI}" >> "${GITHUB_OUTPUT}"
67-
echo "model_schema_digest=${MODEL_SCHEMA_DIGEST}" >> "${GITHUB_OUTPUT}"
68-
echo "snapshot_schema_version=${SNAPSHOT_SCHEMA_VERSION}" >> "${GITHUB_OUTPUT}"
69-
echo "snapshot_schema_uri=${SNAPSHOT_SCHEMA_URI}" >> "${GITHUB_OUTPUT}"
70-
echo "snapshot_schema_digest=${SNAPSHOT_SCHEMA_DIGEST}" >> "${GITHUB_OUTPUT}"
7198
echo "tag_version=${TAG_VERSION}" >> "${GITHUB_OUTPUT}"
7299
73100
- name: Validate schema JSON and $id binding

0 commit comments

Comments
 (0)