143 lines
4.6 KiB
Bash
Executable File
143 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
hugo_install() {
|
|
# inspried from this forum post https://discourse.gohugo.io/t/script-to-install-latest-hugo-release-on-macos-and-ubuntu/14774/10
|
|
# if you have run into github api anonymous access limits which happens during debugging/dev then add user and token here or sourced from a separate file
|
|
# . ~/githubapitoken
|
|
#GITHUB_USER=""
|
|
#GITHUB_TOKEN=""
|
|
|
|
if [ "$GITHUB_TOKEN" != "" ]; then
|
|
echo using access token with script
|
|
echo $GITHUB_USER $GITHUB_TOKEN
|
|
fi
|
|
|
|
EXTENDED=false
|
|
FORCE=false
|
|
EFILE=""
|
|
|
|
# options
|
|
# e - download and install the extended version
|
|
# c - use 'hugoe' as the install command for extended version otherwise 'hugo' will launch extended version
|
|
# f - force download/overwrite of same version
|
|
|
|
declare OPTION
|
|
declare OPTARG
|
|
declare OPTIND
|
|
|
|
while getopts 'ecf' OPTION; do
|
|
case "$OPTION" in
|
|
e)
|
|
echo "installing extended hugo"
|
|
EXTENDED=true
|
|
;;
|
|
c)
|
|
if [ $EXTENDED = true ]; then
|
|
EFILE="e"
|
|
echo using hugoe for extended command
|
|
fi
|
|
;;
|
|
f)
|
|
echo "FORCING download/overwrite"
|
|
FORCE=true
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $((OPTIND - 1))
|
|
|
|
DEFAULT_BIN_DIR="/usr/local/bin"
|
|
# Single optional argument is directory in which to install hugo
|
|
BIN_DIR=${1:-"$DEFAULT_BIN_DIR"}
|
|
|
|
BIN_PATH="$(which hugo$EFILE)"
|
|
declare -A ARCHES
|
|
ARCHES=(["arm64"]="ARM64" ["aarch64"]="ARM64" ["x86_64"]="64bit" ["arm32"]="ARM" ["armhf"]="ARM")
|
|
ARCH=$(arch)
|
|
|
|
if [ -z "${ARCHES[$ARCH]}" ]; then
|
|
echo Your machine kernel architecture $ARCH is not supported by this script, aborting
|
|
exit 1
|
|
fi
|
|
|
|
INSTALLED="$(hugo$EFILE version 2>/dev/null | cut -d'v' -f2 | cut -c 1-6)"
|
|
CUR_VERSION=${INSTALLED:-"None"}
|
|
# echo $(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep tag_name)
|
|
# NEW_VERSION="$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest \
|
|
# | grep tag_name \
|
|
# | cut -d'v' -f2 | cut -c 1-6)"
|
|
|
|
NEW_VERSION=$(lastversion hugo)
|
|
|
|
echo "Hugo $([ $EXTENDED == true ] && echo "Extended"): Current Version : $CUR_VERSION => New Version: $NEW_VERSION"
|
|
|
|
# if [ -z "$NEW_VERSION" ]; then
|
|
# echo Unable to retrieve new version number - Likely you have reached github anonymous limit
|
|
# echo set environment variable $($GITHUB_USER) and $($GITHUB_TOKEN) and try again
|
|
# exit 1
|
|
# fi
|
|
|
|
[[ $NEW_VERSION = $CUR_VERSION ]] && [[ $FORCE = false ]] && echo Latest version already installed at $BIN_PATH && return 0
|
|
|
|
pushd /tmp/ >/dev/null
|
|
|
|
# curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohug#oio/hugo/releases/latest |
|
|
# grep "browser_download_url.*hugo.*._Linux-${ARCHES[$ARCH]}\.tar\.gz" |
|
|
|
|
URL=$(
|
|
lastversion hugo --format assets --filter Linux-${ARCHES[$ARCH]}\.tar\.gz |
|
|
if [ $EXTENDED = true ]; then
|
|
grep "_extended"
|
|
else
|
|
grep -v "_extended"
|
|
fi
|
|
# |
|
|
# cut -d ":" -f 2,3 |
|
|
# tr -d \"
|
|
)
|
|
|
|
echo $URL
|
|
|
|
echo "Installing version $NEW_VERSION $([ $EXTENDED == true ] && echo "Extended") "
|
|
echo "This machine's architecture is $ARCH"
|
|
echo "Downloading Tarball $URL"
|
|
|
|
wget --user=-u $GITHUB_USER --password=$GITHUB_TOKEN -q $URL
|
|
|
|
TARBALL=$(basename $URL)
|
|
# TARBALL="$(find . -name "*Linux-${ARCHES[$ARCH]}.tar.gz" 2>/dev/null)"
|
|
echo Expanding Tarball, $TARBALL
|
|
tar -xzf $TARBALL hugo
|
|
|
|
chmod +x hugo
|
|
|
|
if [ -w $BIN_DIR ]; then
|
|
echo "Installing hugo to $BIN_DIR"
|
|
mv hugo -f $BIN_DIR/hugo$EFILE
|
|
else
|
|
echo "installing hugo to $BIN_DIR (sudo)"
|
|
sudo mv -f hugo $BIN_DIR/hugo$EFILE
|
|
fi
|
|
|
|
rm $TARBALL
|
|
|
|
popd >/dev/null
|
|
|
|
echo Installing hugo $([ $EXTENDED == true ] && echo "extended") as hugo$EFILE
|
|
|
|
BIN_PATH="$(which hugo$EFILE)"
|
|
|
|
if [ -z "$BIN_PATH" ]; then
|
|
printf "WARNING: Installed Hugo Binary in $BIN_DIR is not in your environment path\nPATH=$PATH\n"
|
|
else
|
|
if [ "$BIN_DIR/hugo$EFILE" != "$BIN_PATH" ]; then
|
|
echo "WARNING: Just installed Hugo binary hugo$EFILE to, $BIN_DIR , conflicts with existing Hugo in $BIN_PATH"
|
|
echo "add $BIN_DIR to path and delete $BIN_PATH"
|
|
else
|
|
echo "--- Installation Confirmation ---"
|
|
printf "New Hugo binary version at $BIN_PATH is\n $($BIN_PATH version)\n"
|
|
fi
|
|
fi
|
|
|
|
}
|