#!/usr/bin/env fish

set host rift
set dir /storage/daniel/backups
set ext .tar.zstd.gpg

if not set -q argv[1]
	echo "No directory provided"
	exit 2
end
if not test -d $argv[1]
	echo "Invalid directory given: $argv[1]"
	exit 1
end
set fn (date +%Y%m%d_%H%M%S)(basename $argv[1])
pushd (dirname $argv[1])
# TODO: progress bar/status?
echo "Streaming PGP encrypted backup of $argv[1] to host rift via ssh at $dir/$fn$ext..."
tar cvf - (basename $argv[1]) 2>/dev/null |
	zstd --ultra -T2 -22 |
	gpg --encrypt --recipient daniel@lyte.dev |
	ssh $host "cat - > $dir/$fn$ext"
popd
# TODO: checksum?
echo "Uploaded to host rift via ssh at $dir/$fn$ext"
echo '  Run `unbackupify '$fn$ext'` to restore!'