mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2025-08-30 06:40:10 +02:00
scripts: refactoring & miscellaneous small changes (#2499)
* `update-check.sh` now uses the new log * refactored `setup-stack.sh` The changes are: 1. Replaced `""` wiht `''` where possible (reasoning: Bash is very implicit and I'd like to use `''` where possible to indicate no variables are expanded here) 2. `> /file` -> `>/file` according to our style guide 3. Some log adjustments for messages where I deemed it appropriate 4. Then, an error message from a Dovecot setup was also prevented (by adding a check whether the directory is present before a `: >...` command would create a file in this directory). These are all small, miscellaneous changes that I wanted to combine into one commit and ultimately one PR because I see no point in opening a PR for every small change here. I hope this is fine. * added a small `sleep` to the `_shutdown` function This ensure the last log message is actually logged before Supervisor logs the message that it received a SIGTERM. This makes reading the log easier because now the causal relationship is shown (we are terminating Supervisor, and not someone else and we're just logging it). I forgot to replace `""` with `''` in `update-check.sh`, so I included it here because this is the last commit before PR review. * re-add exit on successful update (only) * re-added date information to update-check log messages * added `_log_with_date` function The new function will log a message with a proper timestamp. This is all handled in `log.sh`, we therefore not need to source other files too. This will be used in the future by `check-for-changes.sh` as well :) Co-authored-by: Casper <casperklein@users.noreply.github.com> Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com>
This commit is contained in:
parent
b9dbec3276
commit
7721a48b9b
4 changed files with 105 additions and 101 deletions
|
@ -1,22 +1,19 @@
|
|||
#! /bin/bash
|
||||
|
||||
VERSION=$(</VERSION)
|
||||
VERSION_URL="https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master/VERSION"
|
||||
CHANGELOG="https://github.com/docker-mailserver/docker-mailserver/blob/master/CHANGELOG.md"
|
||||
# shellcheck source=./helpers/log.sh
|
||||
source /usr/local/bin/helpers/log.sh
|
||||
|
||||
function _log
|
||||
{
|
||||
DATE=$(date '+%F %T')
|
||||
echo "${DATE} ${1}"
|
||||
}
|
||||
VERSION=$(</VERSION)
|
||||
VERSION_URL='https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master/VERSION'
|
||||
CHANGELOG_URL='https://github.com/docker-mailserver/docker-mailserver/blob/master/CHANGELOG.md'
|
||||
|
||||
# check for correct syntax
|
||||
# number + suffix. suffix must be 's' for seconds, 'm' for minutes, 'h' for hours or 'd' for days.
|
||||
if [[ ! ${UPDATE_CHECK_INTERVAL} =~ ^[0-9]+[smhd]{1}$ ]]
|
||||
then
|
||||
_log "Error: Invalid UPDATE_CHECK_INTERVAL value: ${UPDATE_CHECK_INTERVAL}"
|
||||
_log "Info: Fallback to daily update checks"
|
||||
UPDATE_CHECK_INTERVAL="1d"
|
||||
_log_with_date 'warn' "Invalid 'UPDATE_CHECK_INTERVAL' value '${UPDATE_CHECK_INTERVAL}'"
|
||||
_log_with_date 'warn' 'Falling back to daily update checks'
|
||||
UPDATE_CHECK_INTERVAL='1d'
|
||||
fi
|
||||
|
||||
while true
|
||||
|
@ -27,7 +24,7 @@ do
|
|||
# did we get a valid response?
|
||||
if [[ ${LATEST} =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]
|
||||
then
|
||||
_log "Info: Remote version information fetched"
|
||||
_log_with_date 'debug' 'Remote version information fetched'
|
||||
|
||||
# compare versions
|
||||
if dpkg --compare-versions "${VERSION}" lt "${LATEST}"
|
||||
|
@ -41,20 +38,20 @@ There is a docker-mailserver update available on your host: $(hostname -f)
|
|||
Current version: ${VERSION}
|
||||
Latest version: ${LATEST}
|
||||
|
||||
Changelog: ${CHANGELOG}
|
||||
Changelog: ${CHANGELOG_URL}
|
||||
EOM
|
||||
echo "${MAIL}" | mail -s "Mailserver update available! [ ${VERSION} --> ${LATEST} ]" "${POSTMASTER_ADDRESS}" && \
|
||||
|
||||
_log "Info: Update available [ ${VERSION} --> ${LATEST} ]" && \
|
||||
_log_with_date 'info' "Update available [ ${VERSION} --> ${LATEST} ]"
|
||||
|
||||
# only notify once
|
||||
exit 0
|
||||
echo "${MAIL}" | mail -s "Mailserver update available! [ ${VERSION} --> ${LATEST} ]" "${POSTMASTER_ADDRESS}" && exit 0
|
||||
else
|
||||
_log "Info: No update available"
|
||||
_log_with_date 'info' 'No update available'
|
||||
fi
|
||||
else
|
||||
_log "Error: Update check failed."
|
||||
_log_with_date 'warn' 'Update check failed'
|
||||
fi
|
||||
# check again in one day
|
||||
|
||||
# check again in 'UPDATE_CHECK_INTERVAL' time
|
||||
sleep "${UPDATE_CHECK_INTERVAL}"
|
||||
done
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue