update script template file
This commit is contained in:
parent
dcfe2d5bc8
commit
ce3c8e9c8c
125
template-update.sh
Normal file
125
template-update.sh
Normal file
@ -0,0 +1,125 @@
|
||||
#!/bin/sh
|
||||
|
||||
### update script for <ab-container> utility scripts
|
||||
# version x.y.z
|
||||
# script by Asif Bacchus
|
||||
# usage of this script is subject to the license terms found at:
|
||||
# https://git.asifbacchus.app/ab-docker/scripts/LICENSE
|
||||
|
||||
|
||||
### pre-requisites
|
||||
|
||||
# check if wget is installed
|
||||
if ! command -v wget > /dev/null 2>&1; then
|
||||
printf "\nSorry, this script requires that 'wget' is installed in order to automatically update files.\nExiting.\n\n"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# zero counters
|
||||
updatesAvailable=0
|
||||
downloadFailed=0
|
||||
downloadSuccess=0
|
||||
updateFailed=0
|
||||
updateSuccess=0
|
||||
|
||||
# reference constants
|
||||
containerName=''
|
||||
server='https://git.asifbacchus.app/ab-docker/scripts/raw/branch/master/'
|
||||
checksumFilename='checksums.sha256'
|
||||
|
||||
# files to update
|
||||
localScriptName='update.sh'
|
||||
repoScriptName='template-update.sh'
|
||||
updateFiles=""
|
||||
|
||||
printf "\n*** Updating %s container service scripts ***\n\n" "$containerName"
|
||||
|
||||
|
||||
### download latest checksums
|
||||
printf "Getting latest checksums from ab-git server... "
|
||||
if ! wget --quiet --tries=3 --timeout=10 -N "${server}${checksumFilename}"; then
|
||||
printf "[ERROR]\n"
|
||||
printf "Unable to download checksums from ab-git server. Try again later.\n\n"
|
||||
exit 1
|
||||
else
|
||||
printf "[OK]\n"
|
||||
fi
|
||||
|
||||
|
||||
### check for updates to this script
|
||||
printf "Checking for updates to this script... "
|
||||
repoScriptChecksum=$( grep "$repoScriptName" files.sha256 | grep -o '^\S*' )
|
||||
localScriptChecksum=$( sha256sum "$localScriptName" | grep -o '^\S*' )
|
||||
if [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then
|
||||
printf "[NONE]\n\n"
|
||||
else
|
||||
# download updated script
|
||||
if ! wget --quiet --tries=3 --timeout=10 -O $localScriptName "${server}${repoScriptName}"; then
|
||||
printf "[ERROR]\n"
|
||||
printf "Unable to download script update. Try again later.\n\n"
|
||||
exit 1
|
||||
else
|
||||
# verify download
|
||||
localScriptChecksum=$( sha256sum "$localScriptName" | grep -o '^\S*' )
|
||||
if ! [ "$localScriptChecksum" = "$repoScriptChecksum" ]; then
|
||||
printf "[ERROR]\n"
|
||||
printf "Unable to verify checksum of updated script. Try again later.\n\n"
|
||||
else
|
||||
printf "[UPDATED]\n\n"
|
||||
printf "*** This script has been updated. Please re-run it to load the updated version of this file. ***\n\n"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
### update files
|
||||
set -- dummy $updateFiles
|
||||
shift
|
||||
for file; do
|
||||
updateTarget="$file"
|
||||
printf "Checking '%s' for updates... " "$updateTarget"
|
||||
repoFile=$( grep "$updateTarget" files.sha256 | grep -o '^\S*' )
|
||||
if [ -f "$file" ]; then
|
||||
localFile=$( sha256sum "$updateTarget" | grep -o '^\S*' )
|
||||
else
|
||||
localFile=0
|
||||
fi
|
||||
|
||||
if ! [ "$localFile" = "$repoFile" ]; then
|
||||
printf "[AVAILABLE]\n"
|
||||
updatesAvailable=$((updatesAvailable+1))
|
||||
# download update
|
||||
printf "Downloading updated '%s'... " "$updateTarget"
|
||||
# specify a name here instead of using the server name so that wget
|
||||
# overwrites the file
|
||||
if ! wget --quiet --tries=3 --timeout=10 -O "$updateTarget" "${server}${updateTarget}"; then
|
||||
printf "[ERROR]\n"
|
||||
downloadFailed=$((downloadFailed+1))
|
||||
else
|
||||
printf "[OK]\n"
|
||||
downloadSuccess=$((downloadSuccess+1))
|
||||
# verify download
|
||||
printf "Verifying '%s'... " "$updateTarget"
|
||||
localFile=$( sha256sum "$updateTarget" | grep -o '^\S*' )
|
||||
if ! [ "$localFile" = "$repoFile" ]; then
|
||||
printf "[INVALID]\n"
|
||||
updateFailed=$((updateFailed+1))
|
||||
else
|
||||
printf "[OK]\n"
|
||||
updateSuccess=$((updateSuccess+1))
|
||||
fi
|
||||
fi
|
||||
else
|
||||
printf "[NONE]\n"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
### display results
|
||||
printf "\nResults:\n"
|
||||
printf "\tUpdates: %s available\n" "$updatesAvailable"
|
||||
printf "\tDownloads: %s successful, %s failed\n" "$downloadSuccess" "$downloadFailed"
|
||||
printf "\tUpdates: %s applied, %s failed\n" "$updateSuccess" "$updateFailed"
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user