#!/usr/bin/env bash

. lib.bash || exit

usage() {
	echo "Usage: $progname [-t] <source-url> [dest-dir]"
	echo ""
	echo_opt "-t" "Use old 'tla' archive format (default is 'baz')"
}

arg_format=""

while getopts ":t" OPT; do
	case $OPT in
	t) arg_format="--tla";;
	*) lib:die_getopts;;
	esac
done; shift $((OPTIND-1))

src=$1
dest=$2

if ! [[ "$src" ]]; then
	die "missing source URL"
fi
info "source URL: $src"

name=$(curl -sSf "$src/=meta-info/name")
if ! [[ "$name" ]]; then
	die "could not determine source archive name"
fi
info "archive name: $name"

if ! [[ "$dest" ]]; then
	dest="$PWD/$name"
fi
dest=$(readlink -f "$dest")
info "destination: $dest"

if ! [[ "$(tla whereis-archive "$name-SOURCE")" == "$src" ]]; then
	lib:echo "Registering origin archive '$name-SOURCE'"
	tla register-archive --force "$name-SOURCE" "$src"
fi

if ! [[ -d "$dest/=meta-info" ]]; then
	lib:echo "Registering local mirror archive '$name'"
	tla register-archive --force --delete "$name"

	lib:echo "Mirroring local archive"
	tla make-archive $arg_format --mirror-from "$name-SOURCE" "$dest"
fi

lib:echo "Updating local mirror archive"
tla archive-mirror "$name"
