style(script): reformat and fix typos
- reformat spacing, indentation - fix spelling mistakes - change textblock functions to camelCase - add shellcheck exceptions
This commit is contained in:
		
							parent
							
								
									a4221ae6e4
								
							
						
					
					
						commit
						276de6d890
					
				| @ -4,10 +4,9 @@ | |||||||
| ### Backup exported email from piler (bare-metal) | ### Backup exported email from piler (bare-metal) | ||||||
| ####### | ####### | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### set environment variables | ### set environment variables | ||||||
| if [ -z "$TERM" ]; then | if [ -z "$TERM" ]; then | ||||||
|     export TERM=dumb; |     export TERM=dumb | ||||||
| fi | fi | ||||||
| export PATH=$PATH:/usr/local/bin | export PATH=$PATH:/usr/local/bin | ||||||
| 
 | 
 | ||||||
| @ -34,11 +33,9 @@ else | |||||||
|     yellow="" |     yellow="" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### trap | ### trap | ||||||
| trap trapExit 1 2 3 6 | trap trapExit 1 2 3 6 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### functions | ### functions | ||||||
| 
 | 
 | ||||||
| # bad configuration value passed in details file | # bad configuration value passed in details file | ||||||
| @ -76,6 +73,7 @@ cleanup () { | |||||||
|     # cleanup 503 if copied |     # cleanup 503 if copied | ||||||
|     if [ "$err503Copied" -eq 1 ]; then |     if [ "$err503Copied" -eq 1 ]; then | ||||||
|         if ! rm -f "$webroot/$err503File" 2>>"$logFile"; then |         if ! rm -f "$webroot/$err503File" 2>>"$logFile"; then | ||||||
|  |             # shellcheck disable=SC2129 | ||||||
|             printf "%s[%s] -- [WARNING] Could not remove 503 error page." \ |             printf "%s[%s] -- [WARNING] Could not remove 503 error page." \ | ||||||
|                 "$warn" "$(stamp)" >>"$logFile" |                 "$warn" "$(stamp)" >>"$logFile" | ||||||
|             printf " Web interface will not function until this file is " \ |             printf " Web interface will not function until this file is " \ | ||||||
| @ -89,6 +87,7 @@ cleanup () { | |||||||
|     fi |     fi | ||||||
|     # remove EML temporary directory |     # remove EML temporary directory | ||||||
|     if ! rm -rf "$exportDir" 2>>"$logFile"; then |     if ! rm -rf "$exportDir" 2>>"$logFile"; then | ||||||
|  |         # shellcheck disable=SC2129 | ||||||
|         printf "%s[%s] -- [WARNING] Could not remove EML export tmp dir:" \ |         printf "%s[%s] -- [WARNING] Could not remove EML export tmp dir:" \ | ||||||
|             "$warn" "$(stamp)" >>"$logFile" |             "$warn" "$(stamp)" >>"$logFile" | ||||||
|         printf "\n%s\n" "$exportDir" >>"$logFile" |         printf "\n%s\n" "$exportDir" >>"$logFile" | ||||||
| @ -116,56 +115,56 @@ exitError () { | |||||||
| scriptHelp() { | scriptHelp() { | ||||||
|     newline |     newline | ||||||
|     printf "%sUsage: %s [parameters]%s\n\n" "$bold" "$scriptName" "$norm" |     printf "%sUsage: %s [parameters]%s\n\n" "$bold" "$scriptName" "$norm" | ||||||
|     textblock "There are no mandatory parameters. If a parameter is not supplied, its default value will be used. In the case of a switch parameter, it will remain DEactivated by default." |     textBlock "There are no mandatory parameters. If a parameter is not supplied, its default value will be used. In the case of a switch parameter, it will remain DEACTIVATED by default." | ||||||
|     newline |     newline | ||||||
|     textblock "Parameters are listed then followed by a description of their effect on the following line. Finally, if a default value exists, it will be listed on the next line in (parentheses)." |     textBlock "Parameters are listed then followed by a description of their effect on the following line. Finally, if a default value exists, it will be listed on the next line in (parentheses)." | ||||||
|     newline |     newline | ||||||
|     textblock "${magenta}--- script related ---${norm}" |     textBlock "${magenta}--- script related ---${norm}" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "-c | --config | --details" |     textBlockSwitch "-c | --config | --details" | ||||||
|     textblock "Path to the configuration key/value pair file for this script." |     textBlock "Path to the configuration key/value pair file for this script." | ||||||
|     defaultsTextblock "(scriptPath/scriptName.details)" |     textBlockDefaults "(scriptPath/scriptName.details)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "-h | -? | --help" |     textBlockSwitch "-h | -? | --help" | ||||||
|     textblock "This help screen." |     textBlock "This help screen." | ||||||
|     newline |     newline | ||||||
|     switchTextblock "-l | --log" |     textBlockSwitch "-l | --log" | ||||||
|     textblock "Path to write log file." |     textBlock "Path to write log file." | ||||||
|     defaultsTextblock "(scriptPath/scriptName.log)" |     textBlockDefaults "(scriptPath/scriptName.log)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "[SWITCH] -v | --verbose" |     textBlockSwitch "[SWITCH] -v | --verbose" | ||||||
|     textblock "Log borg output with increased verbosity (list all files). Careful! Your log file can get very large very quickly!" |     textBlock "Log borg output with increased verbosity (list all files). Careful! Your log file can get very large very quickly!" | ||||||
|     defaultsTextblock "(normal output, option is OFF)" |     textBlockDefaults "(normal output, option is OFF)" | ||||||
|     newline |     newline | ||||||
|     textblock "${magenta}--- export options ---${norm}" |     textBlock "${magenta}--- export options ---${norm}" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "[SWITCH] -a | --all" |     textBlockSwitch "[SWITCH] -a | --all" | ||||||
|     textblock "Export ALL email saved by piler. This is generally only useful for an initial backup. Setting this switch will override any specified start/end dates." |     textBlock "Export ALL email saved by piler. This is generally only useful for an initial backup. Setting this switch will override any specified start/end dates." | ||||||
|     defaultsTextblock "(use start/end dates, option is OFF)" |     textBlockDefaults "(use start/end dates, option is OFF)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "--start" |     textBlockSwitch "--start" | ||||||
|     textblock "Export email starting from this date (inclusive). Date MUST be provided in YYYY.MM.DD format." |     textBlock "Export email starting from this date (inclusive). Date MUST be provided in YYYY.MM.DD format." | ||||||
|     defaultsTextblock "(yesterday's date)" |     textBlockDefaults "(yesterday's date)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "--end" |     textBlockSwitch "--end" | ||||||
|     textblock "Export email ending at this date (inclusive). Date MUST be provided in YYYY.MM.DD format." |     textBlock "Export email ending at this date (inclusive). Date MUST be provided in YYYY.MM.DD format." | ||||||
|     defaultsTextblock "(yesterday's date)" |     textBlockDefaults "(yesterday's date)" | ||||||
|     newline |     newline | ||||||
|     textblock "${magenta}--- 503 functionality ---${norm}" |     textBlock "${magenta}--- 503 functionality ---${norm}" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "[SWITCH] -5 | --use-503" |     textBlockSwitch "[SWITCH] -5 | --use-503" | ||||||
|     textblock "Copy an 'error 503' page/indicator file to your webroot for your webserver to find. Specifying this option will enable other 503 options." |     textBlock "Copy an 'error 503' page/indicator file to your webroot for your webserver to find. Specifying this option will enable other 503 options." | ||||||
|     defaultsTextblock "(do NOT copy, option is OFF)" |     textBlockDefaults "(do NOT copy, option is OFF)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "--503-path" |     textBlockSwitch "--503-path" | ||||||
|     textblock "Path to the file you want copied to your webroot as the 'error 503' page." |     textBlock "Path to the file you want copied to your webroot as the 'error 503' page." | ||||||
|     defaultsTextblock "(scriptPath/503_backup.html)" |     textBlockDefaults "(scriptPath/503_backup.html)" | ||||||
|     newline |     newline | ||||||
|     switchTextblock "-w | --webroot" |     textBlockSwitch "-w | --webroot" | ||||||
|     textblock "Path to where the 'error 503' file should be copied." |     textBlock "Path to where the 'error 503' file should be copied." | ||||||
|     defaultsTextblock "(/usr/share/nginx/html/)" |     textBlockDefaults "(/usr/share/nginx/html/)" | ||||||
|     newline |     newline | ||||||
|     textblock "More details and examples of script usage can be found in the repo wiki at ${yellow}https://git.asifbacchus.app/asif/pilerBackup/wiki${norm}" |     textBlock "More details and examples of script usage can be found in the repo wiki at ${yellow}https://git.asifbacchus.app/asif/pilerBackup/wiki${norm}" | ||||||
|     newline |     newline | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -174,15 +173,15 @@ stamp () { | |||||||
|     (date +%F" "%T) |     (date +%F" "%T) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| textblock() { | textBlock() { | ||||||
|     printf "%s\n" "$1" | fold -w "$width" -s |     printf "%s\n" "$1" | fold -w "$width" -s | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| defaultsTextblock() { | textBlockDefaults() { | ||||||
|     printf "%s%s%s\n" "$yellow" "$1" "$norm" |     printf "%s%s%s\n" "$yellow" "$1" "$norm" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| switchTextblock() { | textBlockSwitch() { | ||||||
|     printf "%s%s%s\n" "$cyan" "$1" "$norm" |     printf "%s%s%s\n" "$cyan" "$1" "$norm" | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -203,7 +202,6 @@ trapExit () { | |||||||
| 
 | 
 | ||||||
| ### end of functions | ### end of functions | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### default variable values | ### default variable values | ||||||
| 
 | 
 | ||||||
| ## script related | ## script related | ||||||
| @ -233,7 +231,6 @@ exportStart=$( date -d 'yesterday' +'%Y.%m.%d' ) | |||||||
| exportEnd=$(date -d 'yesterday' +'%Y.%m.%d') | exportEnd=$(date -d 'yesterday' +'%Y.%m.%d') | ||||||
| pilerUser='piler' | pilerUser='piler' | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### process startup parameters | ### process startup parameters | ||||||
| while [ $# -gt 0 ]; do | while [ $# -gt 0 ]; do | ||||||
|     case "$1" in |     case "$1" in | ||||||
| @ -344,10 +341,9 @@ while [ $# -gt 0 ]; do | |||||||
|     shift |     shift | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### check pre-requisites and default values | ### check pre-requisites and default values | ||||||
| # check if running as root, otherwise exit | # check if running as root, otherwise exit | ||||||
| if [ $( id -u ) -ne 0 ]; then | if [ "$(id -u)" -ne 0 ]; then | ||||||
|     printf "\n%sERROR: script MUST be run as ROOT%s\n\n" "$err" "$norm" |     printf "\n%sERROR: script MUST be run as ROOT%s\n\n" "$err" "$norm" | ||||||
|     exit 2 |     exit 2 | ||||||
| fi | fi | ||||||
| @ -375,21 +371,18 @@ if [ "$use503" -eq 1 ]; then | |||||||
|     fi |     fi | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### start logging | ### start logging | ||||||
| printf "%s[%s] --- Start %s execution ---%s\n" \ | printf "%s[%s] --- Start %s execution ---%s\n" \ | ||||||
|     "$magenta" "$(stamp)" "$scriptName" "$norm" >>"$logFile" |     "$magenta" "$(stamp)" "$scriptName" "$norm" >>"$logFile" | ||||||
| printf "%s[%s] -- [INFO] Log located at %s%s%s --%s\n" \ | printf "%s[%s] -- [INFO] Log located at %s%s%s --%s\n" \ | ||||||
|     "$cyan" "$(stamp)" "$yellow" "$logFile" "$cyan" "$norm" >>"$logFile" |     "$cyan" "$(stamp)" "$yellow" "$logFile" "$cyan" "$norm" >>"$logFile" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### 503 functionality | ### 503 functionality | ||||||
| if [ "$use503" -eq 1 ]; then | if [ "$use503" -eq 1 ]; then | ||||||
|     printf "%s[%s] -- [INFO] Copying 503 error page to " \ |     printf "%s[%s] -- [INFO] Copying 503 error page to " \ | ||||||
|         "$cyan" "$(stamp)" >>"$logFile" |         "$cyan" "$(stamp)" >>"$logFile" | ||||||
|     printf "webroot -- %s\n" "$norm" >>"$logFile" |     printf "webroot -- %s\n" "$norm" >>"$logFile" | ||||||
|     if ! \cp --force "${err503Path}" "${webroot}/${err503File}" 2>> "$logFile" |     if ! \cp --force "${err503Path}" "${webroot}/${err503File}" 2>>"$logFile"; then | ||||||
|         then |  | ||||||
|         printf "%s[%s] -- [WARNING] Failed to copy 503 error page. " \ |         printf "%s[%s] -- [WARNING] Failed to copy 503 error page. " \ | ||||||
|             "$warn" "$(stamp)" >>"$logFile" |             "$warn" "$(stamp)" >>"$logFile" | ||||||
|         printf "Web users will NOT be notified --%s\n" "$norm" >>"$logFile" |         printf "Web users will NOT be notified --%s\n" "$norm" >>"$logFile" | ||||||
| @ -402,23 +395,23 @@ if [ "$use503" -eq 1 ]; then | |||||||
|     fi |     fi | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### read details file to get variables needed to dump sql and run borg | ### read details file to get variables needed to dump sql and run borg | ||||||
| # check if config details file was provided as a relative or absolute path | # check if config details file was provided as a relative or absolute path | ||||||
| case "${configDetails}" in | case "${configDetails}" in | ||||||
| /*) | /*) | ||||||
|     # absolute path, no need to rewrite variable |     # absolute path, no need to rewrite variable | ||||||
|  |     # shellcheck source=pilerbackup.details | ||||||
|     . "${configDetails}" |     . "${configDetails}" | ||||||
|     ;; |     ;; | ||||||
| *) | *) | ||||||
|     # relative path, prepend './' to create absolute path |     # relative path, prepend './' to create absolute path | ||||||
|  |     # shellcheck source=pilerbackup.details | ||||||
|     . "./${configDetails}" |     . "./${configDetails}" | ||||||
|     ;; |     ;; | ||||||
| esac | esac | ||||||
| printf "%s[%s] -- [INFO] %s%s%s imported --%s\n" \ | printf "%s[%s] -- [INFO] %s%s%s imported --%s\n" \ | ||||||
|     "$cyan" "$(stamp)" "$yellow" "$configDetails" "$cyan" "$norm" >>"$logFile" |     "$cyan" "$(stamp)" "$yellow" "$configDetails" "$cyan" "$norm" >>"$logFile" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ## create tmp directory and change to it for export operations | ## create tmp directory and change to it for export operations | ||||||
| # create temporary directory to dump exported email from piler | # create temporary directory to dump exported email from piler | ||||||
| tmpdir="/tmp/emailbackup/$(date +%F_%T)" | tmpdir="/tmp/emailbackup/$(date +%F_%T)" | ||||||
| @ -426,12 +419,15 @@ if ! exportDir=$( mkdir -p "${tmpdir}" 2>>"$logFile" ); then | |||||||
|     exitError 111 "Could not create temporary directory for exported EML files" |     exitError 111 "Could not create temporary directory for exported EML files" | ||||||
| fi | fi | ||||||
| # grant pilerUser permission to write to temporary directory | # grant pilerUser permission to write to temporary directory | ||||||
| if ! (chown root:${pilerUser} "$exportDir" && chmod 770 "$exportDir"); then | if # shellcheck disable=SC2086 | ||||||
|  |     ! (chown root:${pilerUser} "$exportDir" && chmod 770 "$exportDir") | ||||||
|  | then | ||||||
|     exitError 112 "Could not set permissions on temporary directory" |     exitError 112 "Could not set permissions on temporary directory" | ||||||
| fi | fi | ||||||
| if ! cd "$exportDir"; then | if ! cd "$exportDir"; then | ||||||
|     exitError 113 "Unable to change to temporary export directory" |     exitError 113 "Unable to change to temporary export directory" | ||||||
| fi | fi | ||||||
|  | # shellcheck disable=SC2129 | ||||||
| printf "%s[%s] -- [INFO] EML files will be temporarily stored in:" \ | printf "%s[%s] -- [INFO] EML files will be temporarily stored in:" \ | ||||||
|     "$cyan" "$(stamp)" >>"$logFile" |     "$cyan" "$(stamp)" >>"$logFile" | ||||||
| printf "\n\t%s%s/%s --%s\n" "$yellow" "$exportDir" "$cyan" "$norm" >>"$logFile" | printf "\n\t%s%s/%s --%s\n" "$yellow" "$exportDir" "$cyan" "$norm" >>"$logFile" | ||||||
| @ -453,12 +449,10 @@ else | |||||||
|         "$ok" "$(stamp)" "$norm" >>"$logFile" |         "$ok" "$(stamp)" "$norm" >>"$logFile" | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### pre-backup tasks completed -- move to borg tasks | ### pre-backup tasks completed -- move to borg tasks | ||||||
| printf "%s[%s] -- [SUCCESS] Pre-backup tasks completed --%s\n" \ | printf "%s[%s] -- [SUCCESS] Pre-backup tasks completed --%s\n" \ | ||||||
|     "$ok" "$(stamp)" "$norm" >>"$logFile" |     "$ok" "$(stamp)" "$norm" >>"$logFile" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### Run borg variable checks | ### Run borg variable checks | ||||||
| printf "%s[%s] -- [INFO] Verifying supplied borg details --%s\n" \ | printf "%s[%s] -- [INFO] Verifying supplied borg details --%s\n" \ | ||||||
|     "$cyan" "$(stamp)" "$norm" >>"$logFile" |     "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||||
| @ -543,7 +537,7 @@ printf "%sdetails:borgXtraListPath%s -- %s[OK]%s\n" \ | |||||||
|     includeXtra=1 |     includeXtra=1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| ## check if exlusion list file is specified | ## check if exclusion list file is specified | ||||||
| if [ -n "${borgExcludeListPath}" ]; then | if [ -n "${borgExcludeListPath}" ]; then | ||||||
|     # check if the file actually exists |     # check if the file actually exists | ||||||
|     if [ ! -f "${borgExcludeListPath}" ]; then |     if [ ! -f "${borgExcludeListPath}" ]; then | ||||||
| @ -552,7 +546,6 @@ if [ -n "${borgExcludeListPath}" ]; then | |||||||
|     exclusions=1 |     exclusions=1 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### create borg temp dir: | ### create borg temp dir: | ||||||
| ## python requires a writable temporary directory when unpacking borg and | ## python requires a writable temporary directory when unpacking borg and | ||||||
| ## executing commands.  This defaults to /tmp but many systems mount /tmp with | ## executing commands.  This defaults to /tmp but many systems mount /tmp with | ||||||
| @ -571,7 +564,6 @@ if [ ! -d "${borgBaseDir}/tmp" ]; then | |||||||
| fi | fi | ||||||
| export TMPDIR="${borgBaseDir}/tmp" | export TMPDIR="${borgBaseDir}/tmp" | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### execute borg depending on whether extra files and/or exclusions are defined | ### execute borg depending on whether extra files and/or exclusions are defined | ||||||
| 
 | 
 | ||||||
| ## construct the proper borg commandline | ## construct the proper borg commandline | ||||||
| @ -618,11 +610,11 @@ else | |||||||
|     warnCount=$((warnCount + 1)) |     warnCount=$((warnCount + 1)) | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 | ### execute borg prune if parameters are provided, otherwise skip with a warning | ||||||
| ### execute borg prune if paramters are provided, otherwise skip with a warning |  | ||||||
| if [ -n "${borgPruneSettings}" ]; then | if [ -n "${borgPruneSettings}" ]; then | ||||||
|     printf "%s[%s] -- [INFO] Executing borg prune operation --%s\n" \ |     printf "%s[%s] -- [INFO] Executing borg prune operation --%s\n" \ | ||||||
|         "$cyan" "$(stamp)" "$norm" >>"$logFile" |         "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||||
|  |     # shellcheck disable=SC2086 | ||||||
|     borg prune --show-rc -v ${borgPruneParams} ${borgPruneSettings} \ |     borg prune --show-rc -v ${borgPruneParams} ${borgPruneSettings} \ | ||||||
|         2>>"$logFile" |         2>>"$logFile" | ||||||
|     borgPruneResult="$?" |     borgPruneResult="$?" | ||||||
| @ -657,7 +649,6 @@ if [ -n "${borgPruneResult}" ]; then | |||||||
|     fi |     fi | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ### all processes successfully completed, cleanup and exit gracefully | ### all processes successfully completed, cleanup and exit gracefully | ||||||
| 
 | 
 | ||||||
| # note successful completion of borg commands | # note successful completion of borg commands | ||||||
| @ -679,8 +670,6 @@ else | |||||||
| fi | fi | ||||||
| exit 0 | exit 0 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| ### error codes | ### error codes | ||||||
| # 1: parameter error | # 1: parameter error | ||||||
| # 2: not run as root | # 2: not run as root | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user