install.sh raw

   1  #!/bin/bash
   2  set -e
   3  
   4  BASE_URL="https://git.smesh.lol/moxie-releases"
   5  INSTALL_DIR="${MOXIE_INSTALL_DIR:-/opt/moxie}"
   6  
   7  ARCH=$(uname -m)
   8  case "$ARCH" in
   9      x86_64) ARCH=amd64 ;;
  10      aarch64) ARCH=arm64 ;;
  11      *) echo "error: unsupported arch $ARCH" >&2; exit 1 ;;
  12  esac
  13  
  14  OS=$(uname -s | tr '[:upper:]' '[:lower:]')
  15  if [ "$OS" != "linux" ]; then
  16      echo "error: only linux supported, got $OS" >&2
  17      exit 1
  18  fi
  19  
  20  PATTERN="moxie-v.*-${OS}-${ARCH}\\.tar\\.gz"
  21  
  22  echo "fetching release list ..." >&2
  23  PAGE=$(curl -sL "$BASE_URL")
  24  FILES=$(echo "$PAGE" | grep -oP '(?<=href="/moxie-releases/blob/)[^"]+\.tar\.gz' | grep -E "$PATTERN" || true)
  25  
  26  if [ -z "$FILES" ]; then
  27      echo "error: no releases found for ${OS}/${ARCH}" >&2
  28      exit 1
  29  fi
  30  
  31  LATEST=$(echo "$FILES" | sed 's/moxie-v\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1 \2 \3 &/' | sort -k1,1n -k2,2n -k3,3n | tail -1 | awk '{print $4}')
  32  
  33  echo "latest: $LATEST" >&2
  34  echo "downloading ..." >&2
  35  
  36  DL=$(mktemp -d)
  37  trap "rm -rf $DL" EXIT
  38  
  39  curl -fsSL "${BASE_URL}/raw/${LATEST}" -o "${DL}/${LATEST}"
  40  
  41  SUDO=""
  42  if [ ! -w "$(dirname "$INSTALL_DIR")" ] && [ "$(id -u)" != "0" ]; then
  43      SUDO=sudo
  44  fi
  45  
  46  if [ -d "$INSTALL_DIR" ]; then
  47      echo "removing old installation ..." >&2
  48      $SUDO rm -rf "$INSTALL_DIR"
  49  fi
  50  
  51  $SUDO mkdir -p "$INSTALL_DIR"
  52  $SUDO tar xzf "${DL}/${LATEST}" --strip-components=1 -C "$INSTALL_DIR"
  53  
  54  if [ ! -x "$INSTALL_DIR/bin/moxie" ]; then
  55      echo "error: install failed - moxie binary not found" >&2
  56      exit 1
  57  fi
  58  
  59  echo "" >&2
  60  echo "installed to $INSTALL_DIR" >&2
  61  echo "" >&2
  62  echo "add to your shell profile:" >&2
  63  echo "  export PATH=\"$INSTALL_DIR/bin:\$PATH\"" >&2
  64  echo "  export MOXIEROOT=\"$INSTALL_DIR\"" >&2
  65  echo "" >&2
  66  echo "moxie requires LLVM 19 (libLLVM-19, libclang)." >&2
  67