diff --git a/modules/archive.sh b/modules/archive.sh index 3df2d7f..a1d52f7 100755 --- a/modules/archive.sh +++ b/modules/archive.sh @@ -1,12 +1,10 @@ #!/bin/bash # This script packs a file or directory into a 7z archive with the given password. # It can (optionally) split the archives into volumes of a fixed size in megabytes. +source colors.sh +source functions.sh -archive_dir="$(dirname "$0")/../archives" - -input_file="${1}" -archive_pwd="${2}" -size="$3" +trap 'cleanup' EXIT cleanup() { [[ -n "$archive" ]] && rm -f "$archive*" @@ -72,10 +70,25 @@ create_archive() { 7z a -mhe=on "-p${archive_pwd}" "$volumes" "$archive" "${input_file}" >&2 } -trap cleanup 1 2 3 6 +main() { + archive_dir="$(dirname "$0")/../archives" + input_file="${1}" + archive_pwd="${2}" + size="$3" -check_dependencies -check_input -set_volumes -generate_name -create_archive + check_dependencies + check_input + set_volumes + generate_name + create_archive +} + + +# Missing arguments must be caught here when using `set -e`, otherwise +# the script will exit prematurely without logging the error. +if (( $# == 3 )); then + main "$@" +else + log_err "Missing arguments" + exit 2 +fi