-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathphase1_system_bootstrap.sh
More file actions
executable file
·75 lines (63 loc) · 2.43 KB
/
phase1_system_bootstrap.sh
File metadata and controls
executable file
·75 lines (63 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env bash
set -euo pipefail
GREEN='\033[0;32m'; RED='\033[0;31m'; BLUE='\033[0;34m'; NC='\033[0m'
log() { echo -e "${GREEN}[✓]${NC} $*"; }
err() { echo -e "${RED}[✗]${NC} $*"; exit 1; }
info() { echo -e "${BLUE}[→]${NC} $*"; }
info "Checking system prerequisites..."
# Node.js
if command -v node &>/dev/null; then
NODE_VER=$(node --version)
log "Node.js: $NODE_VER"
NODE_MAJOR=$(echo "$NODE_VER" | sed 's/v//' | cut -d. -f1)
[ "$NODE_MAJOR" -lt 18 ] && err "Node.js 18+ required (found $NODE_VER). Install via: brew install node"
else
err "Node.js not found. Install via: brew install node"
fi
# npm
command -v npm &>/dev/null && log "npm: $(npm --version)" || err "npm not found"
# Python 3
if command -v python3 &>/dev/null; then
log "Python3: $(python3 --version)"
else
err "Python3 not found. Install via: brew install python3"
fi
# Git
command -v git &>/dev/null && log "Git: $(git --version | cut -d' ' -f3)" || err "Git not found"
# gh CLI
command -v gh &>/dev/null && log "GitHub CLI: $(gh --version | head -1 | awk '{print $3}')" || err "GitHub CLI not found. Install via: brew install gh"
# Chrome
CHROME_APP="/Applications/Google Chrome.app"
if [ -d "$CHROME_APP" ]; then
CHROME_VER=$("$CHROME_APP/Contents/MacOS/Google Chrome" --version 2>/dev/null | awk '{print $NF}')
log "Chrome: $CHROME_VER"
else
err "Google Chrome not found at $CHROME_APP"
fi
# gcloud CLI
GCLOUD_PATHS=(
"/opt/homebrew/Caskroom/gcloud-cli/*/google-cloud-sdk/bin/gcloud"
"/usr/local/Caskroom/gcloud-cli/*/google-cloud-sdk/bin/gcloud"
"$HOME/google-cloud-sdk/bin/gcloud"
)
GCLOUD=""
for pattern in "${GCLOUD_PATHS[@]}"; do
for match in $pattern; do
[ -x "$match" ] && GCLOUD="$match" && break 2
done
done
if [ -n "$GCLOUD" ]; then
log "gcloud CLI: $($GCLOUD --version 2>/dev/null | head -1 | awk '{print $4}')"
else
info "gcloud CLI not found — installing via Homebrew..."
if command -v brew &>/dev/null; then
brew install --cask google-cloud-sdk
GCLOUD="/opt/homebrew/Caskroom/gcloud-cli/$(ls /opt/homebrew/Caskroom/gcloud-cli/ | head -1)/google-cloud-sdk/bin/gcloud"
log "gcloud CLI installed: $($GCLOUD --version 2>/dev/null | head -1 | awk '{print $4}')"
else
err "Neither gcloud nor Homebrew found. Install gcloud manually: https://cloud.google.com/sdk/docs/install"
fi
fi
echo "$GCLOUD" > /tmp/opensin-gcloud-path
mkdir -p "$HOME/.config/sin"
log "Phase 1 complete — all system prerequisites satisfied"