papirus-folders/install.sh
2022-07-25 18:15:04 +03:00

107 lines
2.5 KiB
Bash
Executable file

#!/bin/sh
set -e
# these variables can be overwritten
: "${PREFIX:=/usr}"
: "${TAG:=master}"
: "${uninstall:=false}"
bin_name="papirus-folders"
gh_url="https://github.com/PapirusDevelopmentTeam"
gh_repo="$bin_name"
gh_desc="Papirus Folders"
cat <<- EOF
ppppp ii
pp pp aaaaa ppppp rr rrr uu uu sssss
ppppp aa aa pp pp ii rrrr uu uu ssss
pp aa aa pp pp ii rr uu uu ssss
pp aaaaa ppppp ii rr uuuuu sssss
pp
pp
$gh_desc
$gh_url/$gh_repo
EOF
_msg() {
echo "=>" "$@"
}
_sudo() {
if [ -w "$PREFIX" ] || [ -w "$(dirname "$PREFIX")" ]; then
"$@"
else
sudo "$@"
fi
}
_rm() {
# removes parent directories if empty
_sudo rm -rf "$1"
_sudo rmdir -p "$(dirname "$1")" 2>/dev/null || true
}
_download() {
_msg "Getting the latest version from GitHub ..."
wget -O "$temp_file" \
"$gh_url/$gh_repo/archive/$TAG.tar.gz"
_msg "Unpacking archive ..."
tar -xzf "$temp_file" -C "$temp_dir"
}
_uninstall() {
_msg "Deleting $gh_desc ..."
_rm "$PREFIX/bin/$bin_name"
_rm "$PREFIX/share/bash-completion/completions/$bin_name"
_rm "$PREFIX/share/zsh/site-functions/_$bin_name"
_rm "$PREFIX/share/zsh/vendor-completions/_$bin_name"
}
_install() {
# strip leading `v` symbol
tag="${TAG#v}"
_msg "Installing ..."
_sudo mkdir -p "$PREFIX/bin"
_sudo install -m 755 "$temp_dir/$gh_repo-$tag/$bin_name" \
"$PREFIX/bin/$bin_name"
_sudo mkdir -p "$PREFIX/share/bash-completion/completions"
_sudo install -m 644 "$temp_dir/$gh_repo-$tag/completion/$bin_name" \
"$PREFIX/share/bash-completion/completions"
if [ -d "$PREFIX/share/zsh/site-functions" ]; then
_sudo install -m 644 "$temp_dir/$gh_repo-$tag/completion/_$bin_name" \
"$PREFIX/share/zsh/site-functions"
elif [ -d "$PREFIX/share/zsh/vendor-completions" ]; then
_sudo install -m 644 "$temp_dir/$gh_repo-$tag/completion/_$bin_name" \
"$PREFIX/share/zsh/vendor-completions"
else :
fi
}
_cleanup() {
_msg "Clearing cache ..."
rm -rf "$temp_file" "$temp_dir"
_msg "Done!"
}
trap _cleanup EXIT HUP INT TERM
temp_file="$(mktemp -u)"
temp_dir="$(mktemp -d)"
if [ "$uninstall" = "false" ]; then
_download
_uninstall
_install
else
_uninstall
fi