#!/usr/bin/env bash
# Instala el comando `itsjustmy` descargando la gema que sirve itsjustmy.blog.
set -euo pipefail

host="${ITSJUSTMY_INSTALL_HOST:-https://itsjustmy.blog}"
version="0.2.0" # cli-version

need_ruby() {
  local current="${1:-}"
  {
    if [ -n "$current" ]; then
      echo "Tienes Ruby ${current}. Hace falta Ruby 3.2 o más nuevo para instalar itsjustmy."
    else
      echo "No encuentro Ruby 3.2 o más nuevo. Hace falta ruby y gem para instalar itsjustmy."
    fi
    echo
    echo "Instálalo y vuelve a ejecutar este comando:"
    echo
    echo "  macOS:          brew install ruby"
    echo "  Debian/Ubuntu:  sudo apt install ruby-full"
    echo
    echo "Después comprueba que ruby y gem están en el PATH (ruby -v)."
  } >&2
  exit 1
}

if ! command -v ruby >/dev/null 2>&1 || ! command -v gem >/dev/null 2>&1; then
  need_ruby ""
fi

if ! ruby -e 'exit(Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.2.0") ? 0 : 1)'; then
  current="$(ruby -e 'print RUBY_VERSION' 2>/dev/null || true)"
  need_ruby "$current"
fi

bindir="${HOME}/.local/bin"
workdir="$(mktemp -d)"
trap 'rm -rf "$workdir"' EXIT

curl -fsSL "${host}/cli/itsjustmy-${version}.gem" -o "${workdir}/itsjustmy.gem"
mkdir -p "$bindir"
gem install "${workdir}/itsjustmy.gem" --user-install --bindir "$bindir" --no-document

echo "Instalado: ${bindir}/itsjustmy"
case ":$PATH:" in
  *":${bindir}:"*) ;;
  *) echo "Añade ${bindir} al PATH: export PATH=\"${bindir}:\$PATH\"" ;;
esac
