From 6292d72015f6ce69f0f3dd52b4d813b954df2b3c Mon Sep 17 00:00:00 2001 From: crater2150 Date: Mon, 24 Feb 2020 10:32:03 +0100 Subject: [PATCH] Remove tagsistant aliases, add tmsu --- aliases/functions | 74 ----------------------------------------------- aliases/tmsu | 41 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 74 deletions(-) create mode 100755 aliases/tmsu diff --git a/aliases/functions b/aliases/functions index f0a549c..47226b6 100644 --- a/aliases/functions +++ b/aliases/functions @@ -95,80 +95,6 @@ cd(){ # filesystem stuff ##############################################################################{{{ -t=${TAGSISTANT_ROOT:-$HOME/tagged}/store -tagmount() { - tagsistant ${TAGSISTANT_ROOT:-$HOME/tagged} &>/tmp/tagsistant.$USER -} - -tag() { - if [[ -z $2 ]]; then - printf "%s\n" \ - "Usage: tag FILE... [-n name] [-v] [-p] TAG..." \ - "" \ - "Each TAG must end with the @ delimiter component." \ - "Each File must have a name different from a single @" - return 1 - fi - local name preview - - zparseopts -D -E n:=name -name:=name p=preview -preview=preview \ - v=verbose -verbose=verbose - - local sources=() - local tags=() - - for i in "${@}"; do - if [[ ${i:t} == "@" ]]; then - tags+=${i} - else - sources+=${i:A} - fi - done - - for source in "${sources[@]}"; do - for tag in "${tags[@]}"; do - target=~t/$tag - if [[ ! -d $target ]]; then mkdir -p $target; fi - if [[ -n $verbose ]]; then echo "Tagging $source with $tag"; fi - ${=preview:+echo} ln -s $source $target/${name[2]} - done - 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 $verbose $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 -} - -tcd() { - rpath=$(realpath ~t/$1) - if [[ -d $rpath ]]; then - cd $rpath; - else - cd ${rpath:h} - fi -} # count files in current or given directory count() { diff --git a/aliases/tmsu b/aliases/tmsu new file mode 100755 index 0000000..1a8f6c7 --- /dev/null +++ b/aliases/tmsu @@ -0,0 +1,41 @@ +#!/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 +}