feat: initial public release (MAESTRO)
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# migrate-config.sh — convert a legacy (v1) config.yaml to the v2 layout.
|
||||
#
|
||||
# Usage:
|
||||
# scripts/migrate-config.sh # in-place rewrite of ./config.yaml
|
||||
# scripts/migrate-config.sh --dry-run # print result to stdout + diff to stderr
|
||||
# scripts/migrate-config.sh --config /path.yaml # operate on a different file
|
||||
#
|
||||
# The script delegates to the TypeScript CLI compiled at
|
||||
# dist/scripts/migrate-config.js. If that file doesn't exist yet, we try
|
||||
# the tsx runtime as a fallback (matches `npm run dev`'s approach), so
|
||||
# the script works even before `npm run build` has run once.
|
||||
#
|
||||
# Exit codes mirror the Node CLI (see src/scripts/migrate-config.ts).
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
DIST_ENTRY="$PROJECT_DIR/dist/scripts/migrate-config.js"
|
||||
TS_ENTRY="$PROJECT_DIR/src/scripts/migrate-config.ts"
|
||||
|
||||
if [[ -f "$DIST_ENTRY" ]]; then
|
||||
exec node "$DIST_ENTRY" "$@"
|
||||
fi
|
||||
|
||||
# Fallback path for pre-build environments. Prefer tsx > ts-node because
|
||||
# the rest of the repo's npm scripts use tsx (see package.json:bench).
|
||||
if command -v npx >/dev/null 2>&1; then
|
||||
if [[ -f "$PROJECT_DIR/node_modules/tsx/dist/cli.mjs" ]] || npx --no-install tsx --version >/dev/null 2>&1; then
|
||||
exec npx --no-install tsx "$TS_ENTRY" "$@"
|
||||
fi
|
||||
if [[ -f "$PROJECT_DIR/node_modules/ts-node/dist/bin.js" ]]; then
|
||||
exec node --loader ts-node/esm "$TS_ENTRY" "$@"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "error: neither dist/scripts/migrate-config.js nor a TS runtime (tsx/ts-node) is available." >&2
|
||||
echo " Run 'npm run build' first, or install tsx (npm i -D tsx)." >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user