Jérémy Dubois
0d48a8eec3
All checks were successful
continuous-integration/drone/push Build is passing
130 lines
3 KiB
Bash
130 lines
3 KiB
Bash
#!/bin/sh
|
|
|
|
PROGNAME="update-evobackup-canary"
|
|
REPOSITORY="https://gitea.evolix.org/evolix/evobackup"
|
|
|
|
VERSION="22.06"
|
|
readonly VERSION
|
|
|
|
# base functions
|
|
|
|
show_version() {
|
|
cat <<END
|
|
${PROGNAME} version ${VERSION}
|
|
|
|
Copyright 2022 Evolix <info@evolix.fr>,
|
|
Jérémy Lecour <jlecour@evolix.fr>,
|
|
and others.
|
|
|
|
${REPOSITORY}
|
|
|
|
${PROGNAME} comes with ABSOLUTELY NO WARRANTY. This is free software,
|
|
and you are welcome to redistribute it under certain conditions.
|
|
See the GNU General Public License v3.0 for details.
|
|
END
|
|
}
|
|
show_help() {
|
|
cat <<END
|
|
${PROGNAME} is updating a canary file for evobackup.
|
|
|
|
Usage: ${PROGNAME} [OPTIONS]
|
|
|
|
Main options
|
|
-w, --who who has updated the file (default: logname())
|
|
-f, --file path of the canary file (default: /zzz_evobackup_canary)
|
|
-V, --version print version and exit
|
|
-h, --help print this message and exit
|
|
END
|
|
}
|
|
|
|
main() {
|
|
if [ -z "${who:-}" ]; then
|
|
who=$(logname)
|
|
fi
|
|
if [ -z "${canary_file:-}" ]; then
|
|
canary_file="/zzz_evobackup_canary"
|
|
fi
|
|
# This option is supported both on OpenBSD which does not use GNU date and on Debian
|
|
date=$(date "+%FT%T%z")
|
|
|
|
printf "%s %s\n" "${date}" "${who}" >> "${canary_file}"
|
|
}
|
|
|
|
# parse options
|
|
# based on https://gist.github.com/deshion/10d3cb5f88a21671e17a
|
|
while :; do
|
|
case $1 in
|
|
-h|-\?|--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
-V|--version)
|
|
show_version
|
|
exit 0
|
|
;;
|
|
|
|
-w|--who)
|
|
# with value separated by space
|
|
if [ -n "$2" ]; then
|
|
who=$2
|
|
shift
|
|
else
|
|
printf 'ERROR: "-w|--who" requires a non-empty option argument.\n' >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
--who=?*)
|
|
# with value speparated by =
|
|
who=${1#*=}
|
|
;;
|
|
--who=)
|
|
# without value
|
|
printf 'ERROR: "--who" requires a non-empty option argument.\n' >&2
|
|
exit 1
|
|
;;
|
|
|
|
-f|--file)
|
|
# with value separated by space
|
|
if [ -n "$2" ]; then
|
|
canary_file=$2
|
|
shift
|
|
else
|
|
printf 'ERROR: "-f|--file" requires a non-empty option argument.\n' >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
--file=?*)
|
|
# with value speparated by =
|
|
canary_file=${1#*=}
|
|
;;
|
|
--file=)
|
|
# without value
|
|
printf 'ERROR: "--file" requires a non-empty option argument.\n' >&2
|
|
exit 1
|
|
;;
|
|
|
|
--)
|
|
# End of all options.
|
|
shift
|
|
break
|
|
;;
|
|
-?*)
|
|
# ignore unknown options
|
|
printf 'WARN: Unknown option : %s\n' "$1" >&2
|
|
exit 1
|
|
;;
|
|
*)
|
|
# Default case: If no more options then break out of the loop.
|
|
break
|
|
;;
|
|
esac
|
|
|
|
shift
|
|
done
|
|
|
|
export LC_ALL=C
|
|
|
|
set -u
|
|
|
|
main
|