74 lines
1.8 KiB
Bash
74 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
print_step() {
|
|
printf '\n\033[33m[%s/6] %s\033[0m\n' "$1" "$2"
|
|
}
|
|
|
|
print_ok() {
|
|
printf '\033[32mOK\033[0m\n'
|
|
}
|
|
|
|
ensure_pnpm() {
|
|
if command -v pnpm >/dev/null 2>&1; then
|
|
PNPM_CMD=(pnpm)
|
|
return
|
|
fi
|
|
|
|
if command -v corepack >/dev/null 2>&1; then
|
|
LOCAL_CI_HOME="${TMPDIR:-/tmp}/incudal-local-ci"
|
|
export COREPACK_HOME="$LOCAL_CI_HOME/corepack"
|
|
mkdir -p "$COREPACK_HOME"
|
|
mkdir -p "$LOCAL_CI_HOME/bin"
|
|
cat > "$LOCAL_CI_HOME/bin/pnpm" <<'SH'
|
|
#!/usr/bin/env bash
|
|
exec corepack pnpm "$@"
|
|
SH
|
|
chmod +x "$LOCAL_CI_HOME/bin/pnpm"
|
|
export PATH="$LOCAL_CI_HOME/bin:$PATH"
|
|
PNPM_CMD=(corepack pnpm)
|
|
return
|
|
fi
|
|
|
|
printf '\033[31mFAILED: pnpm is not installed and corepack is unavailable\033[0m\n' >&2
|
|
exit 1
|
|
}
|
|
|
|
printf '\033[36m========================================\033[0m\n'
|
|
printf '\033[36m Local CI Test (macOS)\033[0m\n'
|
|
printf '\033[36m========================================\033[0m\n'
|
|
|
|
ensure_pnpm
|
|
|
|
print_step 1 "Installing dependencies..."
|
|
"${PNPM_CMD[@]}" install --frozen-lockfile --ignore-scripts
|
|
print_ok
|
|
|
|
print_step 2 "Generating Prisma Client..."
|
|
export DATABASE_URL="postgresql://user:pass@localhost:5432/db"
|
|
"${PNPM_CMD[@]}" --filter server exec prisma generate
|
|
print_ok
|
|
|
|
print_step 3 "Running lint..."
|
|
"${PNPM_CMD[@]}" lint
|
|
print_ok
|
|
|
|
print_step 4 "Type checking client..."
|
|
"${PNPM_CMD[@]}" --filter client type-check
|
|
print_ok
|
|
|
|
print_step 5 "Type checking server..."
|
|
"${PNPM_CMD[@]}" --filter server type-check
|
|
print_ok
|
|
|
|
print_step 6 "Building..."
|
|
"${PNPM_CMD[@]}" build
|
|
print_ok
|
|
|
|
printf '\n\033[32m========================================\033[0m\n'
|
|
printf '\033[32m All CI checks passed!\033[0m\n'
|
|
printf '\033[32m========================================\033[0m\n'
|