grokkit/scripts/grokkit-install.sh
Greg Gauthier b8482b6fb0
Some checks failed
CI / Test (push) Successful in 26s
CI / Lint (push) Successful in 20s
CI / Build (push) Successful in 14s
Release / Create Release (push) Failing after 10s
feat(release): add automated release workflow and install script
- Embed version info in binaries via ldflags
- Create multi-platform builds, archives, and checksums
- Add Gitea release creation and asset upload in CI
- Introduce GoReleaser config for standardized builds
- Add version command and install script for easy deployment
- Update README with pre-built installation instructions
2026-03-01 23:25:31 +00:00

51 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
VERSION=${VERSION:-${1:?Provide VERSION env or arg, e.g. VERSION=1.0.0 bash grokkit-install.sh}}
GITEA_BASE=https://repos.gmgauthier.com/gmgauthier/grokkit
# Detect platform
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$OS" in
linux) OS=linux ;;
darwin) OS=darwin ;;
esac
ARCH=$(uname -m)
case "$ARCH" in
x86_64|amd64) ARCH=amd64 ;;
arm64|aarch64) ARCH=arm64 ;;
esac
ASSET="grokkit_${OS}_${ARCH}_${VERSION}.tar.gz"
echo "Installing grokkit ${VERSION} for ${OS}/${ARCH}..."
TEMP_DIR=$(mktemp -d)
trap "rm -rf \"${TEMP_DIR}\"" EXIT
cd "${TEMP_DIR}"
# Download
curl -fL "${GITEA_BASE}/releases/download/v${VERSION}/${ASSET}" -o asset.tar.gz
curl -fL "${GITEA_BASE}/releases/download/v${VERSION}/checksums.txt" -o checksums.txt
# Verify checksum
HASH=$(grep " ${ASSET}$" checksums.txt | cut -d " " -f1)
echo "${HASH} asset.tar.gz" | shasum -a 256 --check - || { echo "Checksum mismatch!"; exit 1; }
# Extract
tar xzf asset.tar.gz
BINARY="grokkit"
# Install
INSTALL_DIR="${HOME}/.local/bin"
mkdir -p "${INSTALL_DIR}"
mv "${BINARY}" "${INSTALL_DIR}/grokkit"
chmod +x "${INSTALL_DIR}/grokkit"
echo "✅ grokkit ${VERSION} installed to ${INSTALL_DIR}/grokkit"
echo "Add to PATH if needed: export PATH=\"${INSTALL_DIR}:\$PATH\""
grokkit version