clean hugo install script
parent
e548e54338
commit
a04f0cb2d9
|
@ -39,32 +39,55 @@ root_command() {
|
|||
local server=${args[--server]:-$BACKUP_SERVER}
|
||||
server=${server:-$s_server}
|
||||
|
||||
local host=${args[--host]:-$s_host}
|
||||
if [[ $host ]]; then host="-H $host"; fi
|
||||
local hostname=${args[--hostname]:-$s_hostname}
|
||||
hostname=${hostname:-$s_host}
|
||||
hostname=${hostname:-$HOSTNAME}
|
||||
|
||||
local backup_dir=${args[--backup_dir]:-$BACKUP_DIR}
|
||||
backup_dir=${backup_dir:-$s_backup_dir}
|
||||
backup_dir=${backup_dir:-"/backup"}
|
||||
|
||||
local smount=${args[--source_mount]:-$BACKUP_SOURCE_MOUNT}
|
||||
smount=${smount:-$s_source_mount}
|
||||
|
||||
echo smount: $smount $s_source_mount
|
||||
|
||||
|
||||
local tmount=${args[--target_mount]:-$BACKUP_TARGET_MOUNT}
|
||||
tmount=${tmount:-$s_target_mount}
|
||||
|
||||
echo tmount: $tmount $s_target_mount
|
||||
|
||||
local source="${args[source]:-$s_source}"
|
||||
source="${source:-$s_source_path}"
|
||||
source=$(echo "${source:-$PWD}" | tr -s /)
|
||||
|
||||
echo yaml source $s_source_path $s_source_mount
|
||||
echo source $source
|
||||
|
||||
echo target $s_target
|
||||
|
||||
echo target path $s_target_path
|
||||
|
||||
local target=${args[target]:-$s_target}
|
||||
target="$(echo $target | tr -s /)"
|
||||
if [[ ${args[--dir]:-$s_dir} ]]; then
|
||||
target="${target}$(echo $source | tr -s / | sed -e "s#^[.]##")"
|
||||
fi
|
||||
if [[ $(isAbsPath $target) ]]; then
|
||||
echo absolute target directory
|
||||
target=${target:-$s_target_path}
|
||||
target=${target:-$(echo "${source}" | tr -s / | sed -e "s#^[.]##")}
|
||||
target="$(echo "${target}" | tr -s /)"
|
||||
echo "target> $target"
|
||||
if [[ ${tmount} ]]; then
|
||||
target="${tmount}${target}"
|
||||
else
|
||||
target="/${s_host:-$HOSTNAME}/${target}"
|
||||
if [[ $server ]]; then
|
||||
target="rest:${server}${target}"
|
||||
else
|
||||
target=${backup_dir}${target}
|
||||
fi
|
||||
target="/${hostname}${target}"
|
||||
fi
|
||||
|
||||
if [[ $server ]]; then
|
||||
target="rest:${server}${target}"
|
||||
fi
|
||||
|
||||
if [[ $smount ]]; then
|
||||
setpath="--set-path ${source}"
|
||||
source=${smount}${source}
|
||||
fi
|
||||
|
||||
local exclude=${args[--exclude_file]:-$BACKUP_EXCLUDE}
|
||||
exclude=${exclude:-$s_exclude}
|
||||
|
@ -95,10 +118,12 @@ root_command() {
|
|||
# local ssh="--remote-schema \"ssh -C %s /home/sysadmin/.local/bin/rdiff-backup --server\""
|
||||
|
||||
#cmd="$sudo rdiff-backup $options $exclude $ssh ${suser}${shost}$source ${tuser}${thost}$target"
|
||||
|
||||
|
||||
local sudo=""
|
||||
local pcmd="${sudo} ${password} ${bin} -r ${target}"
|
||||
|
||||
local cmd="${pcmd} ${host} backup ${source} ${exclude}"
|
||||
local cmd="${pcmd} -H ${hostname} ${setpath} backup ${source} ${exclude}"
|
||||
|
||||
if [[ ${args[--init]} ]]; then cmd="${pcmd} init"; fi
|
||||
if [[ ${args[--snap]} ]]; then cmd="${pcmd} snapshots"; fi
|
||||
|
@ -188,7 +213,7 @@ dbackup_usage() {
|
|||
|
||||
# :flag.usage
|
||||
echo " --view-path PATH"
|
||||
printf " set custom mount path for viewing of snapshot, --view not required if set\n"
|
||||
printf " set custom mount point path for viewing of snapshot, --view not required if\n set\n"
|
||||
echo
|
||||
|
||||
# :flag.usage
|
||||
|
@ -294,6 +319,11 @@ dbackup_usage() {
|
|||
echo " BACKUP_DIR"
|
||||
printf " Backup Directory\n"
|
||||
echo
|
||||
|
||||
# :environment_variable.usage
|
||||
echo " BACKUP_MOUNT_POINT"
|
||||
printf " mount point of source if mounted external to host\n"
|
||||
echo
|
||||
# :command.usage_examples
|
||||
printf "Examples:\n"
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ environment_variables:
|
|||
help: URL of Restic rest server
|
||||
- name: BACKUP_DIR
|
||||
help: Backup Directory
|
||||
- name: BACKUP_MOUNT_POINT
|
||||
help: mount point of source if mounted external to host
|
||||
|
||||
args:
|
||||
- name: source
|
||||
|
@ -41,7 +43,7 @@ flags:
|
|||
short: -v
|
||||
help: mount snapshot for viewing (default is BACKUP_MOUNT or /opt/backup/view)
|
||||
- long: --view-path
|
||||
help: set custom mount path for viewing of snapshot, --view not required if set
|
||||
help: set custom mount point path for viewing of snapshot, --view not required if set
|
||||
arg: path
|
||||
- long: --prune
|
||||
arg: prune
|
||||
|
|
|
@ -32,32 +32,55 @@ password="RESTIC_PASSWORD=${password}"
|
|||
local server=${args[--server]:-$BACKUP_SERVER}
|
||||
server=${server:-$s_server}
|
||||
|
||||
local host=${args[--host]:-$s_host}
|
||||
if [[ $host ]]; then host="-H $host"; fi
|
||||
local hostname=${args[--hostname]:-$s_hostname}
|
||||
hostname=${hostname:-$s_host}
|
||||
hostname=${hostname:-$HOSTNAME}
|
||||
|
||||
local backup_dir=${args[--backup_dir]:-$BACKUP_DIR}
|
||||
backup_dir=${backup_dir:-$s_backup_dir}
|
||||
backup_dir=${backup_dir:-"/backup"}
|
||||
|
||||
local smount=${args[--source_mount]:-$BACKUP_SOURCE_MOUNT}
|
||||
smount=${smount:-$s_source_mount}
|
||||
|
||||
echo smount: $smount $s_source_mount
|
||||
|
||||
|
||||
local tmount=${args[--target_mount]:-$BACKUP_TARGET_MOUNT}
|
||||
tmount=${tmount:-$s_target_mount}
|
||||
|
||||
echo tmount: $tmount $s_target_mount
|
||||
|
||||
local source="${args[source]:-$s_source}"
|
||||
source="${source:-$s_source_path}"
|
||||
source=$(echo "${source:-$PWD}" | tr -s /)
|
||||
|
||||
echo yaml source $s_source_path $s_source_mount
|
||||
echo source $source
|
||||
|
||||
echo target $s_target
|
||||
|
||||
echo target path $s_target_path
|
||||
|
||||
local target=${args[target]:-$s_target}
|
||||
target="$(echo $target | tr -s /)"
|
||||
if [[ ${args[--dir]:-$s_dir} ]]; then
|
||||
target="${target}$(echo $source | tr -s / | sed -e "s#^[.]##")"
|
||||
fi
|
||||
if [[ $(isAbsPath $target) ]]; then
|
||||
echo absolute target directory
|
||||
target=${target:-$s_target_path}
|
||||
target=${target:-$(echo "${source}" | tr -s / | sed -e "s#^[.]##")}
|
||||
target="$(echo "${target}" | tr -s /)"
|
||||
echo "target> $target"
|
||||
if [[ ${tmount} ]]; then
|
||||
target="${tmount}${target}"
|
||||
else
|
||||
target="/${s_host:-$HOSTNAME}/${target}"
|
||||
if [[ $server ]]; then
|
||||
target="rest:${server}${target}"
|
||||
else
|
||||
target=${backup_dir}${target}
|
||||
fi
|
||||
target="/${hostname}${target}"
|
||||
fi
|
||||
|
||||
if [[ $server ]]; then
|
||||
target="rest:${server}${target}"
|
||||
fi
|
||||
|
||||
if [[ $smount ]]; then
|
||||
setpath="--set-path ${source}"
|
||||
source=${smount}${source}
|
||||
fi
|
||||
|
||||
local exclude=${args[--exclude_file]:-$BACKUP_EXCLUDE}
|
||||
exclude=${exclude:-$s_exclude}
|
||||
|
@ -88,10 +111,11 @@ echo exclude: $exclude
|
|||
# local ssh="--remote-schema \"ssh -C %s /home/sysadmin/.local/bin/rdiff-backup --server\""
|
||||
|
||||
#cmd="$sudo rdiff-backup $options $exclude $ssh ${suser}${shost}$source ${tuser}${thost}$target"
|
||||
|
||||
local sudo=""
|
||||
local pcmd="${sudo} ${password} ${bin} -r ${target}"
|
||||
|
||||
local cmd="${pcmd} ${host} backup ${source} ${exclude}"
|
||||
local cmd="${pcmd} -H ${hostname} ${setpath} backup ${source} ${exclude}"
|
||||
|
||||
if [[ ${args[--init]} ]]; then cmd="${pcmd} init"; fi
|
||||
if [[ ${args[--snap]} ]]; then cmd="${pcmd} snapshots"; fi
|
||||
|
|
|
@ -1,139 +1,139 @@
|
|||
#!/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)
|
||||
# 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)"
|
||||
|
||||
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
|
||||
|
||||
URL=$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest \
|
||||
| grep "browser_download_url.*hugo.*._Linux-${ARCHES[$ARCH]}\.tar\.gz" \
|
||||
| \
|
||||
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)"
|
||||
|
||||
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
|
||||
|
||||
URL=$(curl -u $GITHUB_USER:$GITHUB_TOKEN -s https://api.github.com/repos/gohugoio/hugo/releases/latest \
|
||||
| grep "browser_download_url.*hugo.*._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
|
||||
|
||||
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
|
||||
|
||||
}
|
||||
|
|
Reference in New Issue