62 lines
1.4 KiB
Bash
Executable File
62 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Purpose : Install Claude Code using the official native installer
|
|
|
|
set -euo pipefail
|
|
|
|
# Check if Claude Code is already installed
|
|
if command -v claude &>/dev/null; then
|
|
echo "Claude Code is already installed: $(claude --version)"
|
|
else
|
|
echo "Installing Claude Code..."
|
|
curl -fsSL https://claude.ai/install.sh | bash
|
|
fi
|
|
|
|
# The native installer places the binary in ~/.local/bin
|
|
LINE='export PATH="$HOME/.local/bin:$PATH"'
|
|
if grep -qF "$LINE" ~/.bashrc; then
|
|
echo "~/.local/bin already on PATH in .bashrc"
|
|
else
|
|
echo "$LINE" >> ~/.bashrc
|
|
echo "~/.local/bin added to PATH in .bashrc"
|
|
fi
|
|
|
|
# Desktop notifications via notify-send (libnotify)
|
|
SETTINGS_FILE="$HOME/.claude/settings.json"
|
|
if [ -f "$SETTINGS_FILE" ]; then
|
|
echo "Claude Code settings already exist at $SETTINGS_FILE"
|
|
else
|
|
echo "Writing Claude Code settings to $SETTINGS_FILE..."
|
|
mkdir -p "$(dirname "$SETTINGS_FILE")"
|
|
cat > "$SETTINGS_FILE" <<'EOF'
|
|
{
|
|
"hooks": {
|
|
"Notification": [
|
|
{
|
|
"matcher": "",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "notify-send 'Claude Code' 'Needs your input'"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"Stop": [
|
|
{
|
|
"matcher": "",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "notify-send 'Claude Code' 'Task completed'"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
EOF
|
|
fi
|
|
|
|
echo "Done. Run 'claude' to log in and get started."
|