#!/usr/bin/env bash # shellcheck disable=SC2155 readonly PROGNAME=$(basename "${0}") # shellcheck disable=SC2155 readonly PROGDIR=$(readlink -m "$(dirname "${0}")") # shellcheck disable=SC2124 readonly ARGS=$@ # Change this to wherever you install the libraries readonly LIBDIR="/usr/local/lib/evobackup" source "${LIBDIR}/main.sh" show_version() { cat <, Gregory Colpart , Romain Dessort , Benoit Série , Tristan Pilat , Victor Laborie , Jérémy Lecour and others. ${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 <&2 exit 1 elif [ ! -e "${dest_dir}" ]; then printf "Parent directory '%s' doesn't exist. Create it first.\n" "${dest_dir}" >&2 exit 1 else if cp "${LIBDIR}/zzz_evobackup.sh" "${dest_path}"; then chmod 750 "${dest_path}" sed -i "s|@COMMAND@|${PROGDIR}/${PROGNAME} ${ARGS}|" "${dest_path}" sed -i "s|@DATE@|$(date --iso-8601=seconds)|" "${dest_path}" sed -i "s|@VERSION@|${VERSION}|" "${dest_path}" printf "New evobackup script has been saved to '%s'.\n" "${dest_path}" printf "Remember to customize it (mail notifications, backup servers…).\n" exit 0 fi fi } main() { # Parse options, based on https://gist.github.com/deshion/10d3cb5f88a21671e17a while :; do case ${1:-''} in -V|--version) show_version exit 0 ;; -h|--help) show_help exit 0 ;; --copy-template) # copy-template option, with value separated by space if [ -n "$2" ]; then copy_template "${2}" shift else printf "'%s' requires a non-empty option argument.\n" "--copy-template" >&2 exit 1 fi ;; --copy-template=?*) # copy-template option, with value separated by = copy_template "${1#*=}" ;; --copy-template=) # copy-template option, without value printf "'%s' requires a non-empty option argument.\n" "--copy-template" >&2 exit 1 ;; --) # End of all options. shift break ;; -?*|[[:alnum:]]*) # ignore unknown options printf "unknown option '%s'.\n" "${1}" >&2 exit 1 ;; *) # Default case: If no more options then break out of the loop. break ;; esac shift done } main ${ARGS}