#!/usr/bin/env bash
set -Eeuo pipefail

thisDir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
source "$thisDir/.constants.sh" \
	'[--include-dev] <target-dir> <target-tar>' \
	'rootfs rootfs.tar'

options="$(getopt -n "$self" -o '' --long 'include-dev' -- "$@")" || eusage
eval "set -- $options"
includeDev=
while true; do
	flag="$1"; shift
	case "$flag" in
		--include-dev) includeDev=1 ;;
		--) break ;;
	esac
done

targetDir="${1:-}"; shift || eusage 'missing target-dir'
[ -n "$targetDir" ]
targetTar="${1:-}"; shift || eusage 'missing target-tar'
[ -n "$targetTar" ]

epoch="$(< "$targetDir/debuerreotype-epoch")"
[ -n "$epoch" ]

"$thisDir/debuerreotype-fixup" "$targetDir"

tarArgs=(
	--create
	--file "$targetTar"
	--auto-compress
	--directory "$targetDir"
	--exclude-from "$thisDir/.tar-exclude"
)
if [ -z "$includeDev" ]; then
	tarArgs+=( --exclude './dev/**' )
fi
tarArgs+=(
	--numeric-owner
	--transform 's,^./,,'
	--sort name
	.
)

tar "${tarArgs[@]}"

touch --no-dereference --date="@$epoch" "$targetTar"
