42 lines
809 B
Plaintext
42 lines
809 B
Plaintext
![]() |
#!/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
|
||
|
}
|