#!/usr/bin/env bash
set -e

script=$(basename "$0")
version="1.0.1"

help() {
    echo
    echo "$script"
    echo
    echo 'Description: Export Docker volume content.'
    echo "Syntax: $script [-v|-p|-o|-V|help]"
    echo 'Example: $script -v odoo01 -p filestore/odoo -o /tmp'
    echo 'options:'
    echo '  -v    Name of Docker volume.'
    echo "  -p    Path in volume. Defaults to '/'"
    echo "  -o    Output directory. Defaults to '/var/tmp'"
    echo "  -V    Show $script version."
    echo "  help  Show $script manual."
    echo
}

if [[ "$1" == 'help' ]]; then
    help
    exit
fi

all='false'
path=/
dir=/var/tmp

while getopts ":v: :p: :o: :V" opt; do
    case $opt in
        v) volume="$OPTARG"
        ;;
        p) path="$OPTARG"
        ;;
        o) dir="$OPTARG"
        ;;
        V) echo "$script version $version"
        exit 0
        ;;
        \?) echo "Invalid option -$OPTARG" >&2
        help
        exit 1;;
    esac
done

[[ -z "$volume" ]] && [[ -z "$all" ]] && { echo 'Parameter -v|volume is empty.' ; exit 1; }

echo "Export content of $volume volume with $path path..."
docker run --rm -v "$volume:/source" -v "${dir}:/backup" alpine tar -cf "/backup/$volume.tar" -C "/source/$path" .

echo "Docker volume export has finished: ${dir}/{$volume}.tar"
