From bd19ab9070ecfeff9581bf0fbd3049fd542def84 Mon Sep 17 00:00:00 2001 From: nhatlong90 <118370929+nhatlong90@users.noreply.github.com> Date: Tue, 1 Sep 2026 01:13:07 +0700 Subject: [PATCH] fix(cli): support cross-platform python execution on windows (#462) - replaced hardcoded python3 in npm scripts with a node wrapper to support windows natively without breaking unix systems - updated stale catalog-summary.json snapshot Co-authored-by: khietan <118370929+khietan@users.noreply.github.com> --- cli/package.json | 16 ++++++++-------- cli/scripts/run-python.mjs | 18 ++++++++++++++++++ src/ui-ux-pro-max/data/catalog-summary.json | 10 +++++----- 3 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 cli/scripts/run-python.mjs diff --git a/cli/package.json b/cli/package.json index 8dc5054..00bb25a 100755 --- a/cli/package.json +++ b/cli/package.json @@ -15,14 +15,14 @@ "dev": "bun run src/index.ts", "sync:assets": "node scripts/sync-assets.mjs", "check:assets": "node scripts/sync-assets.mjs --check", - "validate:csv": "cd .. && python3 scripts/validate-csv.py", - "validate:semantic": "cd .. && python3 src/ui-ux-pro-max/scripts/validate_data.py", - "validate:agent-guide": "cd .. && python3 scripts/validate-agent-guide.py", - "validate:catalog-summary": "cd .. && python3 scripts/generate-catalog-summary.py --check", - "test:python": "cd .. && python3 -m unittest discover -s src/ui-ux-pro-max/scripts/tests -p 'test_*.py'", - "evaluate:relevance": "cd .. && python3 scripts/evaluate-relevance.py", - "evaluate:relevance:calibration": "cd .. && python3 scripts/evaluate-relevance.py --split calibration", - "evaluate:relevance:held-out": "cd .. && python3 scripts/evaluate-relevance.py --split held_out", + "validate:csv": "cd .. && node cli/scripts/run-python.mjs scripts/validate-csv.py", + "validate:semantic": "cd .. && node cli/scripts/run-python.mjs src/ui-ux-pro-max/scripts/validate_data.py", + "validate:agent-guide": "cd .. && node cli/scripts/run-python.mjs scripts/validate-agent-guide.py", + "validate:catalog-summary": "cd .. && node cli/scripts/run-python.mjs scripts/generate-catalog-summary.py --check", + "test:python": "cd .. && node cli/scripts/run-python.mjs -m unittest discover -s src/ui-ux-pro-max/scripts/tests -p 'test_*.py'", + "evaluate:relevance": "cd .. && node cli/scripts/run-python.mjs scripts/evaluate-relevance.py", + "evaluate:relevance:calibration": "cd .. && node cli/scripts/run-python.mjs scripts/evaluate-relevance.py --split calibration", + "evaluate:relevance:held-out": "cd .. && node cli/scripts/run-python.mjs scripts/evaluate-relevance.py --split held_out", "smoke:domains": "cd .. && bash scripts/smoke-domains.sh", "smoke:stacks": "cd .. && bash scripts/smoke-stacks.sh", "verify:data": "npm run validate:csv && npm run validate:semantic && npm run validate:agent-guide && npm run validate:catalog-summary && npm run test:python && npm run evaluate:relevance && npm run smoke:domains && npm run smoke:stacks && npm run check:assets", diff --git a/cli/scripts/run-python.mjs b/cli/scripts/run-python.mjs new file mode 100644 index 0000000..f30d40b --- /dev/null +++ b/cli/scripts/run-python.mjs @@ -0,0 +1,18 @@ +#!/usr/bin/env node + +import { spawnSync } from 'node:child_process'; +import { platform } from 'node:os'; + +const cmd = platform() === 'win32' ? 'python' : 'python3'; +const args = process.argv.slice(2); + +const result = spawnSync(cmd, args, { + stdio: 'inherit', + cwd: process.cwd() +}); + +if (result.error) { + console.error(`Failed to start ${cmd}: ${result.error.message}`); + process.exit(1); +} +process.exit(result.status ?? 0); diff --git a/src/ui-ux-pro-max/data/catalog-summary.json b/src/ui-ux-pro-max/data/catalog-summary.json index 4a8c764..e02f199 100644 --- a/src/ui-ux-pro-max/data/catalog-summary.json +++ b/src/ui-ux-pro-max/data/catalog-summary.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "verifiedAt": "2026-08-13", + "verifiedAt": "2026-08-26", "counts": { "styles": { "total": 88, @@ -24,16 +24,16 @@ }, "snapshots": { "google-fonts.csv": { - "sha256": "1c8c3b2ea1faf6a1012da463756def8b3889db33f2226f0343bb4daa80307d03" + "sha256": "d03194d2c35a2cdc4c6846ddde9beb54fdd1f81a3ddc80fead3c0ba2842b75fb" }, "google-font-licenses.json": { - "sha256": "35688523f2955795caa1a47c53b83099e60c1708461476f9cc3a050cf3b0148a" + "sha256": "7c35e410dd8b5853ca86c3e0e3d3cfb73db1ffa3d9a2fa688c182bc44cd9a8d7" }, "icons.csv": { - "sha256": "50816c6012030178195a16ee481ebf58b47bd985d70e8ec58886cc83f6eddafc" + "sha256": "272ccf0eb60e50ba7af55de3ef5c195d92e1862d411b6cb80d81dec4fe56deee" }, "phosphor-icons-upstream.json": { - "sha256": "2399325233b277b5c97a80e6a5e8941154f5d057beee4e7613db87c87d700236" + "sha256": "81c37fb3583eb43a91e93f1a62c4da3b4ff089624c06bfe53950b8205b54974d" } }, "promotionPolicy": {