Compare commits
	
		
			11 Commits
		
	
	
		
			cbb8595380
			...
			db4be32b54
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					db4be32b54 | ||
| 
						 | 
					9d5c7960c9 | ||
| 
						 | 
					f53e673c3f | ||
| 
						 | 
					16df6570bc | ||
| 
						 | 
					38d6967f68 | ||
| 
						 | 
					0a99c75a91 | ||
| 
						 | 
					cb794e755f | ||
| 
						 | 
					d29bff3324 | ||
| 
						 | 
					cbaadc40c4 | ||
| 
						 | 
					7e96583455 | ||
| 
						 | 
					19a8f3a082 | 
@ -1,7 +1,7 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
### update script for ab-nginx container and utility scripts
 | 
			
		||||
# version 1.0.0
 | 
			
		||||
# version 2.0.0
 | 
			
		||||
# script by Asif Bacchus
 | 
			
		||||
###
 | 
			
		||||
 | 
			
		||||
@ -23,40 +23,63 @@ okNotify() {
 | 
			
		||||
  printf "%s[OK]%s\n" "$ok" "$norm"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
scriptHelp() {
 | 
			
		||||
  textNewline
 | 
			
		||||
  textblock "Update ${containerName} container and helper script files"
 | 
			
		||||
  textblock "${bold}Usage: ${localScriptName} [parameters]${norm}"
 | 
			
		||||
  textNewline
 | 
			
		||||
  textblock "If run with no parameters, the script will update both the container and the helper script files, including this update script."
 | 
			
		||||
  textblockHeader " parameters "
 | 
			
		||||
  textblockParam "-h|-?|--help" "Display this help screen."
 | 
			
		||||
  textblockParam "-c|--container|--container-only" "Update the docker container only."
 | 
			
		||||
  textblockParam "-s|--scripts|--scripts-only" "Update the helper scripts (including this update script) only."
 | 
			
		||||
  textNewline
 | 
			
		||||
  exit 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textblock() {
 | 
			
		||||
  printf "%s\n" "$1" | fold -w "$width" -s
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textblockHeader() {
 | 
			
		||||
  printf "\n%s***%s***%s\n" "$header" "$1" "$norm"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textblockParam() {
 | 
			
		||||
  printf "%s%-35s%s%s\n" "$info" "$1" "$2" "$norm"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
textNewline() {
 | 
			
		||||
  printf "\n"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
### text formatting presets
 | 
			
		||||
if command -v tput >/dev/null 2>&1; then
 | 
			
		||||
  bold=$(tput bold)
 | 
			
		||||
  err=$(tput bold)$(tput setaf 1)
 | 
			
		||||
  info=$(tput bold)$(tput setaf 6)
 | 
			
		||||
  header=$(tput bold)$(tput setaf 5)
 | 
			
		||||
  norm=$(tput sgr0)
 | 
			
		||||
  ok=$(tput sgr0)$(tput setaf 2)
 | 
			
		||||
  warn=$(tput bold)$(tput setaf 3)
 | 
			
		||||
  width=$(tput cols)
 | 
			
		||||
else
 | 
			
		||||
  bold=''
 | 
			
		||||
  err=''
 | 
			
		||||
  info=''
 | 
			
		||||
  header=''
 | 
			
		||||
  norm=''
 | 
			
		||||
  ok=''
 | 
			
		||||
  warn=''
 | 
			
		||||
  width=80
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
### pre-requisites
 | 
			
		||||
 | 
			
		||||
# check if wget is installed
 | 
			
		||||
if ! command -v wget >/dev/null 2>&1; then
 | 
			
		||||
  errMsg "Sorry, this script requires that 'wget' is installed in order to download updates. Exiting."
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# check if docker is installed
 | 
			
		||||
if ! command -v docker >/dev/null 2>&1; then
 | 
			
		||||
  errMsg "Sorry, it appears that docker is not installed on this machine! Exiting."
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# is user root or in the docker group?
 | 
			
		||||
if [ ! "$(id -u)" -eq 0 ]; then
 | 
			
		||||
  if ! id -Gn | grep docker >/dev/null; then
 | 
			
		||||
    errMsg "You must either be root or in the 'docker' group to pull container updates."
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# zero counters
 | 
			
		||||
updatesAvailable=0
 | 
			
		||||
downloadFailed=0
 | 
			
		||||
@ -71,22 +94,63 @@ containerUpdatePath="docker.asifbacchus.app/$dockerNamespace/$containerName:late
 | 
			
		||||
server="https://asifbacchus.app/updates/docker/$dockerNamespace/$containerName/"
 | 
			
		||||
checksumFilename='checksums.sha256'
 | 
			
		||||
 | 
			
		||||
# operation triggers
 | 
			
		||||
doDockerUpdate=1
 | 
			
		||||
doScriptUpdate=1
 | 
			
		||||
 | 
			
		||||
# files to update
 | 
			
		||||
localScriptName="$(basename "$0")"
 | 
			
		||||
repoScriptName='update.sh'
 | 
			
		||||
 | 
			
		||||
### update container
 | 
			
		||||
printf "%s\n*** Updating %s container and service scripts ***\n\n%s" "$info" "$containerName" "$norm"
 | 
			
		||||
### process startup parameters
 | 
			
		||||
while [ $# -gt 0 ]; do
 | 
			
		||||
  case "$1" in
 | 
			
		||||
  -h | -\? | --help)
 | 
			
		||||
    # display inline help
 | 
			
		||||
    scriptHelp
 | 
			
		||||
    ;;
 | 
			
		||||
  -s | --scripts | --scripts-only)
 | 
			
		||||
    # update scripts only, skip docker container update
 | 
			
		||||
    doDockerUpdate=0
 | 
			
		||||
    ;;
 | 
			
		||||
  -c | --container | --container-only)
 | 
			
		||||
    # update docker container only, skip script update
 | 
			
		||||
    doScriptUpdate=0
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
    printf "%s\nUnknown option: %s\n" "$err" "$1"
 | 
			
		||||
    printf "%sUse '--help' for valid options%s\n\n" "$info" "$norm"
 | 
			
		||||
    exit 1
 | 
			
		||||
    ;;
 | 
			
		||||
  esac
 | 
			
		||||
  shift
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
printf "Updating container:\n"
 | 
			
		||||
### update container
 | 
			
		||||
if [ "$doDockerUpdate" -eq 1 ]; then
 | 
			
		||||
  # check if docker is installed
 | 
			
		||||
  if ! command -v docker >/dev/null 2>&1; then
 | 
			
		||||
    errMsg "Sorry, it appears that docker is not installed on this machine! Exiting."
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  # is user root or in the docker group?
 | 
			
		||||
  if [ ! "$(id -u)" -eq 0 ]; then
 | 
			
		||||
    if ! id -Gn | grep docker >/dev/null; then
 | 
			
		||||
      errMsg "You must either be root or in the 'docker' group to pull container updates."
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  printf "%s\n*** Updating %s container ***\n\n%s" "$info" "$containerName" "$norm"
 | 
			
		||||
  if ! docker pull "$containerUpdatePath"; then
 | 
			
		||||
    errMsg "There was an error updating the container. Try again later."
 | 
			
		||||
  else
 | 
			
		||||
    okMsg "Container updated!"
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
### update scripts
 | 
			
		||||
printf "%sUpdating %s service scripts%s\n" "$info" "$containerName" "$norm"
 | 
			
		||||
if [ "$doScriptUpdate" -eq 1 ]; then
 | 
			
		||||
  printf "%s*** Updating %s service scripts ***%s\n" "$info" "$containerName" "$norm"
 | 
			
		||||
 | 
			
		||||
  ## download latest checksums
 | 
			
		||||
  printf "Getting latest checksums... "
 | 
			
		||||
@ -173,12 +237,14 @@ while IFS='  ' read -r field1 field2; do
 | 
			
		||||
      printf "[NONE]\n"
 | 
			
		||||
    fi
 | 
			
		||||
  done <"$checksumFilename"
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
### display results
 | 
			
		||||
printf "\n%sResults:%s\n" "$info" "$norm"
 | 
			
		||||
if [ "$doScriptUpdate" -eq 1 ]; then
 | 
			
		||||
  printf "\n%s*** Results ***%s\n" "$info" "$norm"
 | 
			
		||||
  printf "\tUpdates: %s available\n" "$updatesAvailable"
 | 
			
		||||
  printf "\tDownloads: %s%s successful%s, %s%s failed%s\n" "$ok" "$downloadSuccess" "$norm" "$err" "$downloadFailed" "$norm"
 | 
			
		||||
  printf "\tUpdates: %s%s applied%s, %s%s failed%s\n" "$ok" "$updateSuccess" "$norm" "$err" "$updateFailed" "$norm"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user