#!/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