#!/usr/bin/env bash ABRA_VERSION="0.5.0-alpha" ABRA_RELEASE_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$ABRA_VERSION" RC_VERSION="0.5.0-alpha" RC_VERSION_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$RC_VERSION" for arg in "$@"; do if [ "$arg" == "--rc" ]; then ABRA_VERSION="$RC_VERSION" ABRA_RELEASE_URL="$RC_VERSION_URL" fi done function show_banner { echo "" echo " ____ ____ _ _ " echo " / ___|___ ___ _ __ / ___| | ___ _ _ __| |" echo " | | / _ \ _____ / _ \| '_ \ | | | |/ _ \| | | |/ _' |" echo " | |__| (_) |_____| (_) | |_) | | |___| | (_) | |_| | (_| |" echo " \____\___/ \___/| .__/ \____|_|\___/ \__,_|\__,_|" echo " |_|" echo "" echo "" echo " === Public interest infrastructure === " echo "" echo "" } function print_checksum_error { echo "$(tput setaf 1)ERROR: the checksum of downloaded file doesn't match the checksum in release! Either the file was corrupted during download or the file has been changed during transport$(tput sgr0)" echo "expected checksum: $checksum" echo "checksum of downloaded file: $localsum" echo "abra was NOT installed/upgraded" } function install_abra_release { mkdir -p "$HOME/.local/bin" if ! type "wget" > /dev/null 2>&1; then echo "'wget' is not installed, cannot proceed..." echo "perhaps try installing manually via the releases URL?" echo "https://git.coopcloud.tech/coop-cloud/abra/releases" exit 1 fi ARCH=$(uname -m) if [[ $ARCH =~ "aarch64" ]]; then ARCH="arm64" elif [[ $ARCH =~ "armv5l" ]]; then ARCH="armv5" elif [[ $ARCH =~ "armv6l" ]]; then ARCH="armv6" elif [[ $ARCH =~ "armv7l" ]]; then ARCH="armv7" fi PLATFORM=$(uname -s | tr '[:upper:]' '[:lower:]')_$ARCH FILENAME="abra_"$ABRA_VERSION"_"$PLATFORM"" sed_command_rel='s/.*"assets":\[\{[^]]*"name":"'$FILENAME'"[^}]*"browser_download_url":"([^"]*)".*\].*/\1/p' sed_command_checksums='s/.*"assets":\[\{[^\]*"name":"checksums.txt"[^}]*"browser_download_url":"([^"]*)".*\].*/\1/p' json=$(wget -q -O- $ABRA_RELEASE_URL) release_url=$(echo $json | sed -En $sed_command_rel) checksums_url=$(echo $json | sed -En $sed_command_checksums) checksums=$(wget -q -O- $checksums_url) checksum=$(echo "$checksums" | grep "$FILENAME" - | sed -En 's/([0-9a-f]{64})\s+'"$FILENAME"'.*/\1/p') echo "downloading $ABRA_VERSION $PLATFORM binary release for abra..." wget -q "$release_url" -O "$HOME/.local/bin/.abra-download" localsum=$(sha256sum $HOME/.local/bin/.abra-download | sed -En 's/([0-9a-f]{64})\s+.*/\1/p') echo "checking if checksums match..." if [[ "$localsum" != "$checksum" ]]; then print_checksum_error exit 1 fi echo "$(tput setaf 2)check successful!$(tput sgr0)" mv "$HOME/.local/bin/.abra-download" "$HOME/.local/bin/abra" chmod +x "$HOME/.local/bin/abra" x=$(echo $PATH | grep $HOME/.local/bin) if [ $? -ne 0 ]; then echo "$(tput setaf 3)WARNING: $HOME/.local/bin/ is not in \$PATH! If you want to run abra by just typing "abra" you should add it to your \$PATH! To do that run:$(tput sgr0)" p=$HOME/.local/bin com="echo PATH=\$PATH:$p" if [[ $SHELL =~ "bash" ]]; then echo "$com >> $HOME/.bashrc" elif [[ $SHELL =~ "fizsh" ]]; then echo "$com >> $HOME/.fizsh/.fizshrc" elif [[ $SHELL =~ "zsh" ]]; then echo "$com >> $HOME/.zshrc" else echo "$com >> $HOME/.profile" fi fi echo "abra installed to $HOME/.local/bin/abra" echo "test your installation is working by running \"abra\" on your command-line" echo "run \"abra autocomplete -h\" to see how to set up command-line autocompletion" } function run_installation { show_banner install_abra_release } run_installation "$@" exit 0