fix(pi): add installer and runtime path guidance
This commit is contained in:
Executable
+105
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
./scripts/install-pi-package.sh --global
|
||||
./scripts/install-pi-package.sh --local
|
||||
|
||||
Options:
|
||||
--global Install the repo path into ~/.pi/agent/settings.json
|
||||
--local Install the repo path into .pi/settings.json for the current project
|
||||
EOF
|
||||
}
|
||||
|
||||
require_command() {
|
||||
local command_name=$1
|
||||
if ! command -v "$command_name" >/dev/null 2>&1; then
|
||||
echo "Missing required command: $command_name" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
pnpm_cmd=()
|
||||
|
||||
resolve_pnpm() {
|
||||
if command -v pnpm >/dev/null 2>&1; then
|
||||
pnpm_cmd=(pnpm)
|
||||
return
|
||||
fi
|
||||
|
||||
if command -v corepack >/dev/null 2>&1; then
|
||||
pnpm_cmd=(corepack pnpm)
|
||||
return
|
||||
fi
|
||||
|
||||
echo "Missing required command: pnpm (or corepack)" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
run_pnpm() {
|
||||
"${pnpm_cmd[@]}" "$@"
|
||||
}
|
||||
|
||||
require_node_20() {
|
||||
local node_major
|
||||
node_major=$(node -p "process.versions.node.split('.')[0]")
|
||||
if (( node_major < 20 )); then
|
||||
echo "Node.js 20+ is required. Found Node.js $(node -v)." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_scope=
|
||||
if [[ $# -ne 1 ]]; then
|
||||
usage >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
--global)
|
||||
install_scope="global"
|
||||
;;
|
||||
--local)
|
||||
install_scope="local"
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
usage >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
require_command pi
|
||||
require_command node
|
||||
require_node_20
|
||||
resolve_pnpm
|
||||
|
||||
case "$install_scope" in
|
||||
global)
|
||||
pi install "$ROOT_DIR"
|
||||
;;
|
||||
local)
|
||||
pi install -l "$ROOT_DIR"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "Bootstrapping Atlassian runtime dependencies..."
|
||||
run_pnpm install --frozen-lockfile --dir "${ROOT_DIR}/pi-package/skills/atlassian/scripts"
|
||||
|
||||
echo "Bootstrapping web-automation runtime dependencies..."
|
||||
run_pnpm install --frozen-lockfile --dir "${ROOT_DIR}/pi-package/skills/web-automation/scripts"
|
||||
run_pnpm --dir "${ROOT_DIR}/pi-package/skills/web-automation/scripts" exec cloakbrowser install
|
||||
echo "Rebuilding native web-automation dependencies..."
|
||||
run_pnpm rebuild --dir "${ROOT_DIR}/pi-package/skills/web-automation/scripts" better-sqlite3 esbuild
|
||||
|
||||
echo "Installed Pi packages now visible to this scope:"
|
||||
pi list
|
||||
|
||||
echo "Pi package installed (${install_scope}) and runtime dependencies bootstrapped."
|
||||
Reference in New Issue
Block a user