diff --git a/script/install.d/00-os.sh b/script/install.d/00-os.sh old mode 100644 new mode 100755 diff --git a/script/install.d/10-brew.sh b/script/install.d/10-brew.sh old mode 100644 new mode 100755 diff --git a/script/install.d/11-apt.sh b/script/install.d/11-apt.sh old mode 100644 new mode 100755 diff --git a/script/install.d/12-pacman.sh b/script/install.d/12-pacman.sh old mode 100644 new mode 100755 diff --git a/script/install.d/20-ssh.sh b/script/install.d/20-ssh.sh old mode 100644 new mode 100755 diff --git a/script/install.d/21-git.sh b/script/install.d/21-git.sh old mode 100644 new mode 100755 diff --git a/script/install.d/22-zsh.sh b/script/install.d/22-zsh.sh old mode 100644 new mode 100755 diff --git a/script/install.d/23-stow.sh b/script/install.d/23-stow.sh old mode 100644 new mode 100755 diff --git a/script/install.d/30-mise.sh b/script/install.d/30-mise.sh old mode 100644 new mode 100755 index d0d8bec..7657f51 --- a/script/install.d/30-mise.sh +++ b/script/install.d/30-mise.sh @@ -2,8 +2,8 @@ # ----------------------------------------------------------------------------- # Description: -# Install mise runtime manager (base installation only). -# Individual tools are installed in separate scripts (31-python, 32-node, etc.) +# Install mise runtime manager and all development tools. +# Consolidated installation of Python, Node.js, GitHub CLI, Terraform, Firebase, etc. # # Skip in Codespaces (use pre-installed versions) @@ -39,3 +39,50 @@ if ! command -v mise &>/dev/null; then fi mise --version + +# Define all tools to install +typeset -a MISE_TOOLS=( + "python@3" + "poetry@latest" + "node@lts" + "gh@latest" + "terraform@latest" + "firebase@latest" +) + +# Install all tools in parallel +log_info "Installing development tools in parallel..." +mise install "${MISE_TOOLS[@]}" + +# Set global versions +log_info "Setting global versions..." +mise use -g python@3 +mise use -g poetry@latest +mise use -g node@lts +mise use -g gh@latest +mise use -g terraform@latest +mise use -g firebase@latest + +# Activate mise environment for current session +eval "$(mise activate bash)" +export PATH="$HOME/.local/share/mise/shims:$PATH" + +# Setup Poetry ZSH completions +ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}" +if [[ -d "$ZSH_CUSTOM/plugins" ]]; then + POETRY_PLUGIN="$ZSH_CUSTOM/plugins/poetry" + if [ ! -d "$POETRY_PLUGIN" ]; then + mkdir -p "$POETRY_PLUGIN" + mise exec -- poetry completions zsh > "$POETRY_PLUGIN/_poetry" + fi +fi + +# Verify installations using mise exec +log_info "Verifying installations..." +mise exec -- python --version +mise exec -- poetry --version +echo "node $(mise exec -- node --version)" +echo "npm $(mise exec -- npm --version)" +mise exec -- gh --version +mise exec -- terraform --version +echo "firebase: $(mise exec -- firebase --version)" diff --git a/script/install.d/31-python.sh b/script/install.d/31-python.sh deleted file mode 100644 index 78f586c..0000000 --- a/script/install.d/31-python.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash - -# ----------------------------------------------------------------------------- -# Description: -# Install Python via mise and configure poetry. -# - -# Skip in Codespaces (use pre-installed versions) -[[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } - -log_info "Installing Python..." -mise install python@3 -mise use -g python@3 - -log_info "Installing Poetry..." -mise install poetry@latest -mise use -g poetry@latest - -# Setup Poetry ZSH completions -ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}" -if [[ -d "$ZSH_CUSTOM/plugins" ]]; then - POETRY_PLUGIN="$ZSH_CUSTOM/plugins/poetry" - if [ ! -d "$POETRY_PLUGIN" ]; then - mkdir -p "$POETRY_PLUGIN" - poetry completions zsh > "$POETRY_PLUGIN/_poetry" - fi -fi - -# Verify installations -python --version -poetry --version diff --git a/script/install.d/32-node.sh b/script/install.d/32-node.sh deleted file mode 100644 index d69a954..0000000 --- a/script/install.d/32-node.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -# ----------------------------------------------------------------------------- -# Description: -# Install Node.js via mise. -# - -# Skip in Codespaces (use pre-installed versions) -[[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } - -log_info "Installing Node.js..." -mise install node@lts -mise use -g node@lts - -# Verify installations -echo "node $(node --version)" -echo "npm $(npm --version)" diff --git a/script/install.d/33-terraform.sh b/script/install.d/33-terraform.sh deleted file mode 100644 index 7b1d999..0000000 --- a/script/install.d/33-terraform.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -# ----------------------------------------------------------------------------- -# Description: -# Install Terraform via mise. -# - -# Skip in Codespaces (not needed) -[[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } - -log_info "Installing Terraform..." -mise install terraform@latest -mise use -g terraform@latest - -# Verify installation -terraform --version diff --git a/script/install.d/34-firebase.sh b/script/install.d/34-firebase.sh deleted file mode 100644 index 2f67f31..0000000 --- a/script/install.d/34-firebase.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -# ----------------------------------------------------------------------------- -# Description: -# Install Firebase CLI via mise. -# - -# Skip in Codespaces (not needed) -[[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } - -log_info "Installing Firebase CLI..." -mise install firebase@latest -mise use -g firebase@latest - -# Verify installation -echo "firebase: $(firebase --version)" diff --git a/script/install.d/40-gh.sh b/script/install.d/40-gh.sh deleted file mode 100644 index 774db81..0000000 --- a/script/install.d/40-gh.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -# ----------------------------------------------------------------------------- -# Description: -# Install GitHub CLI. -# - -# Skip in Codespaces (pre-installed in universal image) -[[ "$DOTS_ENV" == "codespaces" ]] && { log_pass "Skipping in Codespaces"; return 0; } - -if ! command -v gh &>/dev/null; then - case "$DOTS_PKG" in - apt) - # https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian-ubuntu-linux-raspberry-pi-os-apt - sudo mkdir -p -m 755 /etc/apt/keyrings && wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null && - sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null && - sudo apt-get update -qq && - sudo apt-get install -qq gh - ;; - pacman) - sudo pacman -S --noconfirm github-cli - ;; - brew) - brew install gh - ;; - *) - log_warn "Skipping GitHub CLI install: no supported package manager found" - ;; - esac -fi - -gh --version - diff --git a/script/install.d/41-docker.sh b/script/install.d/41-docker.sh old mode 100644 new mode 100755 diff --git a/script/install.d/42-azure.sh b/script/install.d/42-azure.sh old mode 100644 new mode 100755 diff --git a/script/install.d/43-copilot.sh b/script/install.d/43-copilot.sh old mode 100644 new mode 100755 diff --git a/script/install.d/50-redis.sh b/script/install.d/50-redis.sh old mode 100644 new mode 100755 diff --git a/script/install.d/60-iterm2.sh b/script/install.d/60-iterm2.sh old mode 100644 new mode 100755 diff --git a/script/install.d/61-nerdfont.sh b/script/install.d/61-nerdfont.sh old mode 100644 new mode 100755 diff --git a/script/install.d/70-cca.sh b/script/install.d/70-cca.sh old mode 100644 new mode 100755 diff --git a/script/install.d/71-rectangle.sh b/script/install.d/71-rectangle.sh old mode 100644 new mode 100755 diff --git a/script/install.d/72-meetingbar.sh b/script/install.d/72-meetingbar.sh old mode 100644 new mode 100755 diff --git a/script/install.d/73-betterdisplay.sh b/script/install.d/73-betterdisplay.sh old mode 100644 new mode 100755 diff --git a/script/install.d/74-dockutil.sh b/script/install.d/74-dockutil.sh old mode 100644 new mode 100755 diff --git a/script/install.d/80-fastfetch.sh b/script/install.d/80-fastfetch.sh old mode 100644 new mode 100755 diff --git a/script/install.d/81-cmatrix.sh b/script/install.d/81-cmatrix.sh old mode 100644 new mode 100755 diff --git a/script/install.d/90-macos.sh b/script/install.d/90-macos.sh old mode 100644 new mode 100755 diff --git a/script/install.d/99-fastfetch.sh b/script/install.d/99-fastfetch.sh old mode 100644 new mode 100755