diff options
| author | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-09-01 14:48:45 +0300 |
|---|---|---|
| committer | Ogulcan Celik <ogulcancelik@gmail.com> | 2026-09-01 14:48:45 +0300 |
| commit | 8a6d697308162874a236c84aac0b0f8c7ac01f83 (patch) | |
| tree | ed7dc7e8c6f50d66bde721fae78576aede929f66 /website/install.sh | |
| parent | b54a78aa510b87d1e3b56c619b72eaeb59e4a2a1 (diff) | |
refactor: separate website presentation from runtime
Diffstat (limited to 'website/install.sh')
| -rwxr-xr-x | website/install.sh | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/website/install.sh b/website/install.sh deleted file mode 100755 index 4e3ce40d..00000000 --- a/website/install.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -set -eu - -BIN="herdr" -MANIFEST_URL="https://herdr.dev/latest.json" -INSTALL_DIR="${HERDR_INSTALL_DIR:-$HOME/.local/bin}" - -main() { - echo "" - echo " ,ww" - echo " wWWWWWWW_) herdr installer" - echo " \`WWWWWW' herdr.dev" - echo " II II" - echo "" - - # detect platform - OS="$(uname -s)" - case "$OS" in - Linux) os="linux" ;; - Darwin) os="macos" ;; - *) err "unsupported OS: $OS" ;; - esac - - ARCH="$(uname -m)" - case "$ARCH" in - x86_64|amd64) arch="x86_64" ;; - aarch64|arm64) arch="aarch64" ;; - *) err "unsupported architecture: $ARCH" ;; - esac - - log "detected ${os}/${arch}" - - # check dependencies - need curl - need awk - - # use the same manifest as `herdr update` so installs and updates agree - # on the public latest release. - TARGET="${os}-${arch}" - log "fetching latest release manifest..." - MANIFEST="$(curl -fsSL --retry 3 --connect-timeout 10 --max-time 20 "$MANIFEST_URL")" \ - || err "can't reach ${MANIFEST_URL}. Please try again later; herdr.dev might be down. Who let the sheeps out? baaa." - URL="$(printf '%s\n' "$MANIFEST" | awk -v target="\"${TARGET}\"" ' - /^[[:space:]]*"assets"[[:space:]]*:/ { in_assets = 1; next } - in_assets && /^[[:space:]]*}/ { exit } - in_assets && index($0, target) { - sub(/^.*:[[:space:]]*"/, "") - sub(/".*$/, "") - print - exit - } - ')" - SHA256="$(printf '%s\n' "$MANIFEST" | awk -v target="\"${TARGET}\"" ' - /^[[:space:]]*"sha256"[[:space:]]*:/ { in_sha256 = 1; next } - in_sha256 && /^[[:space:]]*}/ { exit } - in_sha256 && index($0, target) { - sub(/^.*:[[:space:]]*"/, "") - sub(/".*$/, "") - print - exit - } - ')" - VERSION="$(printf '%s\n' "$MANIFEST" | awk -F '"' '/^[[:space:]]*"version"[[:space:]]*:/ { print $4; exit }')" - - if [ -z "$URL" ]; then - err "release manifest does not include a binary for ${TARGET}" - fi - if [ "${#SHA256}" -ne 64 ]; then - err "release manifest does not include a valid SHA-256 checksum for ${TARGET}" - fi - if ! printf '%s\n' "$SHA256" | awk '/[^0-9A-Fa-f]/ { exit 1 }'; then - err "release manifest does not include a valid SHA-256 checksum for ${TARGET}" - fi - SHA256="$(printf '%s\n' "$SHA256" | awk '{ print tolower($0) }')" - - if command -v sha256sum >/dev/null 2>&1; then - SHA256_TOOL="sha256sum" - elif command -v shasum >/dev/null 2>&1; then - SHA256_TOOL="shasum" - elif command -v openssl >/dev/null 2>&1; then - SHA256_TOOL="openssl" - else - err "SHA-256 verification requires sha256sum, shasum, or openssl" - fi - - if [ -n "$VERSION" ]; then - log "downloading v${VERSION}..." - else - log "downloading latest release..." - fi - TMP="$(mktemp -d)" - trap 'rm -rf "$TMP"' EXIT - - if ! curl -fsSL --retry 3 --connect-timeout 10 --max-time 120 "$URL" -o "${TMP}/${BIN}"; then - err "download failed from ${URL}" - fi - - case "$SHA256_TOOL" in - sha256sum) ACTUAL_SHA256="$(sha256sum < "${TMP}/${BIN}" | awk '{ print $1 }')" ;; - shasum) ACTUAL_SHA256="$(shasum -a 256 < "${TMP}/${BIN}" | awk '{ print $1 }')" ;; - openssl) ACTUAL_SHA256="$(openssl dgst -sha256 < "${TMP}/${BIN}" | awk '{ print $NF }')" ;; - esac - if [ "$ACTUAL_SHA256" != "$SHA256" ]; then - err "downloaded Herdr checksum did not match" - fi - - # install - mkdir -p "$INSTALL_DIR" - mv "${TMP}/${BIN}" "${INSTALL_DIR}/${BIN}" - chmod +x "${INSTALL_DIR}/${BIN}" - - log "installed ${BIN} to ${INSTALL_DIR}/${BIN}" - - # check PATH - case ":${PATH}:" in - *":${INSTALL_DIR}:"*) ;; - *) - echo "" - warn "${INSTALL_DIR} is not in your PATH" - echo " add it to your shell config:" - echo "" - echo " export PATH=\"${INSTALL_DIR}:\$PATH\"" - echo "" - ;; - esac - - # verify - if command -v "$BIN" >/dev/null 2>&1; then - echo "" - log "ready. run 'herdr' to get started." - fi - - echo "" -} - -log() { printf ' \033[32m>\033[0m %s\n' "$1"; } -warn() { printf ' \033[33m!\033[0m %s\n' "$1"; } -err() { printf ' \033[31m✗\033[0m %s\n' "$1" >&2; exit 1; } - -need() { - if ! command -v "$1" >/dev/null 2>&1; then - err "requires '$1' — install it first, or download a binary manually from https://herdr.dev/docs/install/" - fi -} - -main "$@" |
