121 lines
2.3 KiB
Bash
Executable File
121 lines
2.3 KiB
Bash
Executable File
#!/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
|