41 lines
		
	
	
	
		
			809 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			809 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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
 | |
| }
 | 
