Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add `install` script
Alexis Sellier committed 3 years ago
commit 505dd9ea9684380289944a297540e2c134b193bf
parent b33893741fa77f2ae258216feae665b1d3f7e3f0
1 file changed +120 -0
added scripts/install
@@ -0,0 +1,120 @@
+
#!/bin/sh
+
#
+
# Radicle isntallation script.
+
#
+
set -e
+

+
url() {
+
  echo "https://files.radicle.xyz/$1/latest/radicle-$1.tar.gz"
+
}
+

+
info() {
+
  printf "\033[36m$*\033[0m\n"
+
}
+

+
success() {
+
  echo
+
  printf "\033[32m✓\033[0m Radicle has been installed successfully. Run \`rad auth\` to get started.\n"
+
}
+

+
fatal() {
+
  printf "\033[31merror\033[0m: $*\n" >&2
+
  exit 1
+
}
+

+
target() {
+
  TARGET=""
+

+
  case "$(uname)/$(uname -m)" in
+
  Darwin/arm64)
+
    TARGET="aarch64-apple-darwin" ;;
+
  Darwin/x86_64)
+
    TARGET="x86_64-apple-darwin" ;;
+
  Linux/arm64|Linux/aarch64)
+
    TARGET="aarch64-unknown-linux-musl" ;;
+
  Linux/x86_64)
+
    TARGET="x86_64-unknown-linux-musl" ;;
+
  *)
+
    fatal "Your operating system is currently unsupported. Sorry!" ;;
+
  esac
+
  echo $TARGET
+
}
+

+
tempdir() {
+
  if [ -n "$TMPDIR" ]; then
+
    echo "$TMPDIR"
+
  elif [ -d "/tmp" ]; then
+
    echo "/tmp"
+
  else
+
    fatal "Could not locate temporary directory"
+
  fi
+
}
+

+
in_path() {
+
  IFS=":"
+

+
  for dir in $PATH; do
+
    if [ "$dir" = "$1" ]; then
+
      return 0 # The path is in $PATH
+
    fi
+
  done
+

+
  return 1 # The path is not in $PATH
+
}
+

+
echo
+
echo "Welcome to Radicle 🌞"
+
echo
+

+
RAD_HOME=${RAD_HOME:-"$HOME/.radicle"}
+
RAD_PATH=${RAD_PATH:-"$RAD_HOME/bin"}
+
SHELL=${SHELL:-"/bin/sh"}
+

+
info "Detecting operating system..."
+
TARGET=$(target)
+

+
if ! command -v tar >/dev/null 2>&1; then
+
  fatal "Please install 'tar' and try again"
+
fi
+

+
if ! command -v curl >/dev/null 2>&1; then
+
  fatal "Please install 'curl' and try again"
+
fi
+

+
info "Installing radicle into '$RAD_PATH'..."
+
mkdir -p "$RAD_PATH"
+
curl -# -L "$(url "$TARGET")" | tar -xz --strip-components=1 -C "$RAD_PATH"
+
chmod +x \
+
  $RAD_PATH/radicle-node \
+
  $RAD_PATH/radicle-httpd \
+
  $RAD_PATH/rad \
+
  $RAD_PATH/git-remote-rad
+

+
# If radicle is not in $PATH, add it here.
+
if ! in_path $RAD_PATH; then
+
  case $SHELL in
+
    */zsh)
+
      PROFILE=$HOME/.zshrc ;;
+
    */bash)
+
      PROFILE=$HOME/.bashrc ;;
+
    */fish)
+
      PROFILE=$HOME/.config/fish/config.fish ;;
+
    */csh)
+
      PROFILE=$HOME/.cshrc ;;
+
    *)
+
      PROFILE=$HOME/.profile ;;
+
  esac
+

+
  info "Configuring PATH in '$PROFILE'..."
+
  echo                                    >> "$PROFILE"
+
  echo "# Radicle binaries."              >> "$PROFILE"
+
  echo "export PATH=\"\$PATH:$RAD_PATH\"" >> "$PROFILE"
+

+
  success
+

+
  # Ensure that the current shell has the updated PATH.
+
  export PATH="$PATH:$RAD_PATH"
+
  exec "$SHELL"
+
fi
+

+
success