#!/bin/sh set -e # Sift One-Liner Installer Script # Usage: curl -fsSL https://raw.githubusercontent.com/taevel02/Sift/refs/heads/main/install.sh | sh echo "• Installing Sift File Automation CLI Engine..." INSTALL_DIR="${HOME}/.local/bin" mkdir -p "$INSTALL_DIR" if command -v cargo >/dev/null 2>&1; then echo "• Rust cargo detected. Building and installing Sift via cargo..." cargo install --git https://github.com/taevel02/Sift.git sift --force echo "✓ Sift installed successfully via cargo!" else echo "• Downloading Sift binary release..." OS="$(uname -s)" ARCH="$(uname -m)" if [ "$OS" = "Darwin" ]; then if [ "$ARCH" = "arm64" ]; then TARGET="aarch64-apple-darwin" else TARGET="x86_64-apple-darwin" fi else TARGET="x86_64-unknown-linux-gnu" fi URL="https://github.com/taevel02/Sift/releases/latest/download/sift-${TARGET}.tar.gz" TEMP_DIR="$(mktemp -d)" curl -fsSL "$URL" -o "$TEMP_DIR/sift.tar.gz" tar -xzf "$TEMP_DIR/sift.tar.gz" -C "$TEMP_DIR" mv "$TEMP_DIR/sift" "$INSTALL_DIR/sift" chmod +x "$INSTALL_DIR/sift" rm -rf "$TEMP_DIR" echo "✓ Sift installed successfully to $INSTALL_DIR/sift!" fi # Auto-initialize default global configuration if missing if command -v sift >/dev/null 2>&1; then sift init >/dev/null 2>&1 || true elif [ -x "$INSTALL_DIR/sift" ]; then "$INSTALL_DIR/sift" init >/dev/null 2>&1 || true fi echo "" echo "✓ Installation complete!" echo "• Make sure $INSTALL_DIR is in your PATH." echo "› Run 'sift check' or 'sift recipe list' to get started."