#!/bin/zsh

exists tmsu || return

tag() {
	separator=${@[(ie):]}
	if [[ ${separator} -ge ${#@} ]]; then
		echo "Usage: tag FILES... : TAGS..."
		return 1
	fi

	for file in $@[1,$((separator - 1))]; do
		tmsu tag --tags="${(j: :)*[$((separator + 1)),${#*}]}" $file
	done
}

papertag() {
	if [[ -z $2 ]]; then
		echo "Usage: papertag FILE [-v] [-y YEAR] [AUTHOR...] [:: OTHER TAGS]"
		return 1
	fi

	local year
	zparseopts -D -E y:=year -year:=year \
		v=verbose -verbose=verbose

	local paper=$1; shift

	tag $paper : paper
	if [[ -n "$year" ]]; then
		tag $verbose $paper meta:/year/eq/${year[2]}/@/
	fi
	while [[ -n $1 ]]; do 
		local author=$1; shift
		if [[ "$author" == "::" ]]; then break; fi
		tag $verbose $paper meta:/author/eq/$author/@
	done
	for tag in "$@"; do
		tag $verbose $paper $tag
	done
}