#!/usr/bin/env bash # Ringa CLI Installer # Usage: curl -fsSL https://install.ringa.com.br | sh set -euo pipefail BASE_URL="${RINGA_BASE_URL:-https://install.ringa.com.br}" INSTALL_DIR="${RINGA_INSTALL_DIR:-$HOME/.ringa/bin}" # Detect OS and arch OS="$(uname -s | tr '[:upper:]' '[:lower:]')" ARCH="$(uname -m)" case "${ARCH}" in x86_64|amd64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; *) echo "Unsupported architecture: ${ARCH}"; exit 1 ;; esac case "${OS}" in linux) SUFFIX="linux-${ARCH}" ;; darwin) SUFFIX="darwin-${ARCH}" ;; *) echo "Unsupported OS: ${OS}"; exit 1 ;; esac BINARY="ringa-${SUFFIX}" VERSION_URL="${BASE_URL}/VERSION" CHECKSUMS_URL="${BASE_URL}/checksums.txt" # Get latest version echo "=> Detecting latest version..." VERSION="$(curl -fsSL "${VERSION_URL}" | tr -d '\r\n')" if [ -z "${VERSION}" ]; then echo "Error: Could not determine latest version" exit 1 fi echo "=> Installing Ringa CLI ${VERSION} (${OS}/${ARCH})" # Download URL="${BASE_URL}/${BINARY}" echo "=> Downloading ${URL}..." mkdir -p "${INSTALL_DIR}" TMP_BIN="$(mktemp "${TMPDIR:-/tmp}/ringa.XXXXXX")" TMP_CHECKSUMS="$(mktemp "${TMPDIR:-/tmp}/ringa-checksums.XXXXXX")" trap 'rm -f "${TMP_BIN}" "${TMP_CHECKSUMS}"' EXIT curl -fsSL "${URL}" -o "${TMP_BIN}" curl -fsSL "${CHECKSUMS_URL}" -o "${TMP_CHECKSUMS}" if command -v sha256sum >/dev/null 2>&1; then EXPECTED="$(grep " ${BINARY}\$" "${TMP_CHECKSUMS}" | awk '{print $1}')" ACTUAL="$(sha256sum "${TMP_BIN}" | awk '{print $1}')" elif command -v shasum >/dev/null 2>&1; then EXPECTED="$(grep " ${BINARY}\$" "${TMP_CHECKSUMS}" | awk '{print $1}')" ACTUAL="$(shasum -a 256 "${TMP_BIN}" | awk '{print $1}')" else EXPECTED="" ACTUAL="" fi if [ -n "${EXPECTED}" ] && [ "${EXPECTED}" != "${ACTUAL}" ]; then echo "Error: checksum validation failed for ${BINARY}" exit 1 fi mv "${TMP_BIN}" "${INSTALL_DIR}/ringa" chmod +x "${INSTALL_DIR}/ringa" # Add to PATH if not already there if ! echo "$PATH" | tr ':' '\n' | grep -q "${INSTALL_DIR}"; then SHELL_RC="" case "${SHELL:-}" in */zsh) SHELL_RC="$HOME/.zshrc" ;; */bash) SHELL_RC="$HOME/.bashrc" ;; *) SHELL_RC="$HOME/.profile" ;; esac if [ -n "${SHELL_RC}" ] && ! grep -q "${INSTALL_DIR}" "${SHELL_RC}" 2>/dev/null; then echo "" >> "${SHELL_RC}" echo "# Ringa CLI" >> "${SHELL_RC}" echo "export PATH=\"${INSTALL_DIR}:\$PATH\"" >> "${SHELL_RC}" echo "=> Added ${INSTALL_DIR} to PATH in ${SHELL_RC}" fi fi echo "" echo "=> Ringa CLI ${VERSION} installed to ${INSTALL_DIR}/ringa" echo "" echo " Run 'ringa install' to complete setup." echo " Run 'ringa --help' for usage." echo "" echo " If ringa is not found, restart your terminal or run:" echo " export PATH=\"${INSTALL_DIR}:\$PATH\""