mirror of
https://github.com/andwati/andwati.com.git
synced 2026-10-18 09:22:53 +00:00
62 lines
2.4 KiB
Bash
Executable File
62 lines
2.4 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
set -e
|
|
|
|
: ${ZOLA_REPO='https://github.com/getzola/zola'}
|
|
: ${ZOLA_INSTALL_DIR="${HOME}/.cargo/bin"}
|
|
|
|
# Helpers for ANSI color and logging.
|
|
name="$(basename $0)"; esc=''; reset="${esc}[0m"
|
|
red() { local string="${1}"; echo "${esc}[31m${string}${reset}"; }
|
|
yellow() { local string="${1}"; echo "${esc}[33m${string}${reset}"; }
|
|
green() { local string="${1}"; echo "${esc}[32m${string}${reset}"; }
|
|
blue() { local string="${1}"; echo "${esc}[34m${string}${reset}"; }
|
|
magenta() { local string="${1}"; echo "${esc}[35m${string}${reset}"; }
|
|
log() { local string="${1}"; echo "[$(blue $name)] ${string}"; }
|
|
|
|
prompt_for_update() {
|
|
local current="${1}"
|
|
local latest="${2}"
|
|
|
|
[ -n "${current}" ] \
|
|
&& installed="You're using Zola $(yellow $current)" \
|
|
|| installed="Zola is $(red 'not installed')"
|
|
|
|
log "${installed}, but $(magenta $latest) is available."
|
|
|
|
# Prompt for an update. Exit the entire script if declined.
|
|
read -p "$(log "Would you like to install Zola $(magenta $latest)? [y/N]: ")" answer
|
|
case $answer in
|
|
[Yy]*) log "Downloading Zola $(magenta $latest) from GitHub." ;;
|
|
[Nn]*|*) log $(red "Aborted!"); exit ;;
|
|
esac
|
|
}
|
|
|
|
install_zola() {
|
|
local version="${1}"
|
|
local download_url="${ZOLA_REPO}/releases/download/${version}/zola-${version}-x86_64-unknown-linux-gnu.tar.gz"
|
|
|
|
curl --progress-bar --location $download_url | tar --gunzip --extract --directory=$ZOLA_INSTALL_DIR --file -
|
|
}
|
|
|
|
update_zola() {
|
|
# Find the current Zola version (if any).
|
|
[ -n "$(which zola 2> /dev/null)" ] && current_version=$(zola --version | awk '{print "v"$2}')
|
|
|
|
# Find the latest available Zola version. Use --refs to avoid listing
|
|
# annotated commit objects that include the dereference syntax '^{}'.
|
|
# Find more background at https://stackoverflow.com/a/15472310.
|
|
local latest_version=$(git ls-remote --tags --refs $ZOLA_REPO | # Fetch remote tags.
|
|
sort -t '/' -k 3 -V | # Sort them by version.
|
|
tail -n 1 | # Take the latest one.
|
|
awk -F / '{print $3}') # Return only the tag.
|
|
|
|
if [ "${current_version}" != "${latest_version}" ]; then
|
|
prompt_for_update "${current_version}" "${latest_version}"
|
|
install_zola "${latest_version}"
|
|
fi
|
|
|
|
log "You're using Zola $(magenta $latest_version). $(green "Everything is up-to-date!")"
|
|
}
|
|
|
|
update_zola |