#!/bin/sh set -e # envv installer # curl -fsSL https://getenvv.com/envv | sh # Default to ~/.local/bin (no sudo required, follows XDG spec) INSTALL_DIR="${INSTALL_DIR:-$HOME/.local/bin}" BASE_URL="https://envv-releases.s3.us-west-1.amazonaws.com" main() { OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$ARCH" in x86_64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; *) err "Unsupported architecture: $ARCH" ;; esac case "$OS" in darwin) SHELL_CONFIG="$HOME/.zshrc" ;; linux) SHELL_CONFIG="$HOME/.bashrc" ;; mingw*|msys*|cygwin*) echo "For Windows, use PowerShell:" echo " irm https://getenvv.com/install.ps1 | iex" exit 1 ;; *) err "Unsupported OS: $OS" ;; esac URL="$BASE_URL/envv-$OS-$ARCH.tar.gz" echo "Installing envv for $OS/$ARCH..." # Create install directory if needed mkdir -p "$INSTALL_DIR" # Download to temp TMP=$(mktemp -d) trap "rm -rf $TMP" EXIT curl -fsSL "$URL" -o "$TMP/envv.tar.gz" || err "Download failed" tar -xzf "$TMP/envv.tar.gz" -C "$TMP" || err "Extract failed" # Install (no sudo needed for ~/.local/bin) mv "$TMP/envv" "$INSTALL_DIR/" chmod +x "$INSTALL_DIR/envv" echo "" echo "Installed to $INSTALL_DIR/envv" # Check if PATH already includes install dir case ":$PATH:" in *":$INSTALL_DIR:"*) PATH_OK=1 ;; *) PATH_OK=0 ;; esac if [ "$PATH_OK" = "0" ]; then echo "" echo "Add envv to your PATH by running:" echo "" echo " echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> $SHELL_CONFIG" echo " source $SHELL_CONFIG" fi echo "" echo "Get started:" echo " envv auth register" } err() { echo "Error: $1" >&2 exit 1 } main