Doesn't look well when invoked from "bash -c '...'" when we run "abra upgrade". The progress bar shoots down the page and you miss the intro banner.
101 lines
3.6 KiB
Bash
Executable File
101 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
ABRA_VERSION="0.3.0-alpha"
|
|
ABRA_RELEASE_URL="https://git.coopcloud.tech/api/v1/repos/coop-cloud/abra/releases/tags/$ABRA_VERSION"
|
|
RC_VERSION="0.4.0-alpha-rc1"
|
|
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
|
|
|
|
|
|
PLATFORM=$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m)
|
|
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
|