Dotfiles/setup/modules/optional-Modules/apps/claude.sh

43 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# ============================================================
# claude.sh — Claude Code CLI (Anthropic)
# ============================================================
# Installs Claude Code, Anthropic's official AI-powered CLI
# coding assistant, as a global npm package.
#
# Claude Code requires Node.js / npm. The script first checks
# whether npm is already on PATH; if not, it attempts to
# activate nvm (Node Version Manager) from the default location
# ~/.nvm so the correct Node.js version is available before
# running the install.
#
# This is an optional module because Claude Code is only useful
# to developers who want AI-assisted coding inside the terminal,
# and it requires an Anthropic API key to function.
# ============================================================
set -euo pipefail
# Load shared logging helpers from the dotfiles lib
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
log "Installing Claude Code via npm..."
# Check whether npm is already available on PATH.
# If not, try to source nvm so it places the correct npm into PATH.
# This handles the common case where Node.js was installed through nvm
# rather than pacman, meaning it isn't in the system PATH by default.
if ! command -v npm &>/dev/null; then
log "Sourcing nvm to get npm..."
export NVM_DIR="$HOME/.nvm"
# nvm.sh sets up the nvm function and adds the active Node.js to PATH.
# The -s test checks that the file exists and is non-empty before sourcing.
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
fi
# Install Claude Code globally so the `claude` command is available system-wide.
# -g installs to the global npm prefix (typically ~/.nvm/versions/node/<ver>/lib
# when using nvm, or /usr/local/lib when using system npm).
npm install -g @anthropic-ai/claude-code
log "Claude Code installed."