Created
October 25, 2022 12:31
-
-
Save nkh/df503e5142d66b2bf4a1ce68e0f90496 to your computer and use it in GitHub Desktop.
tmsu sc-im interface for bash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
L=({A..Z}) | |
ToAA() { AA= ; local i=$1 ; (($i == 0)) && AA='@' ; while ((i)) ; do AA="${L[((--i % 26))]}$AA" ; ((i /= 26)) ; done ; } | |
st() | |
{ | |
cat <<EOF | |
color "type=DEFAULT fg=WHITE bg=DEFAULT_COLOR" | |
color "type=HEADINGS fg=CYAN bg=BLACK bold=0" | |
color "type=HEADINGS_ODD fg=CYAN bg=BLACK bold=0" | |
color "type=CELL_SELECTION bg=CYAN fg=WHITE bold=0" | |
color "type=CELL_SELECTION_SC bg=CYAN fg=WHITE" | |
color "type=STRG fg=WHITE bg=DEFAULT_COLOR bold=0" | |
freeze A | |
format A 30 0 0 | |
cellcolor A0 "bg=BLACK fg=YELLOW bold=1" | |
# leftstring A0 = "+/- to change" | |
goto B1 | |
EOF | |
readarray -t all_tags < <(tmsu tags -1 --name=never $PWD/* | sed -e '/^$/d' | sort -u) | |
column=1 | |
for tag in "${all_tags[@]}" | |
do | |
((column++)) ; ToAA $column ; ((tag_length = ${#tag} + 2)) ; echo -e "format $AA $tag_length 0 0\nlabel ${AA}0 = \"$tag\"" | |
done | |
readarray -t files_and_tags < <(shopt -s dotglob ; tmsu tags $PWD/* 2>&-) | |
declare -A lookup | |
row=0 | |
for file_and_tag in "${files_and_tags[@]}" | |
do | |
((row++)) | |
declare -A file_tags=() | |
file_tag_array=($file_and_tag) | |
for tag in "${file_tag_array[@]:1}" ; do file_tags[$tag]="$tag" ; done | |
file="${file_tag_array%%:}" | |
echo "leftstring A$row = \"${file##*/}\"" | |
column=1 | |
for tag in "${all_tags[@]}" | |
do | |
((column++)) ; ToAA $column | |
lu_tag="> let $AA$row = 1" | |
lookup[$lu_tag]="tmsu tag $file $tag" | |
lu_untag="> let $AA$row = 0" | |
lookup[$lu_untag]="tmsu untag $file $tag" | |
[[ -n "${file_tags[$tag]}" ]] && { echo "cellcolor $AA$row \"fg=BLACK bg=WHITE\"" ; echo "let $AA$row = 1" ; } || echo "let $AA$row = 0" | |
done | |
done | |
declare -p lookup &>"$1" | |
} | |
mkdir -p /tmp/ftl/ | |
scim_tmsu_file="$(mktemp /tmp/ftl/scim_tmsu_XXXXXXX)" | |
st "${scim_tmsu_file}_lookup" | tee "${scim_tmsu_file}_original.sc" >"${scim_tmsu_file}_new.sc" | |
sc-im "${scim_tmsu_file}_new.sc" | |
source "${scim_tmsu_file}_lookup" | |
while read -r tmsu_diff | |
do | |
tmsu_diff=$(echo $tmsu_diff | tr -d '\n') | |
# echo "<${lookup["$tmsu_diff"]}>" | |
${lookup["$tmsu_diff"]} | |
done < <(diff "${scim_tmsu_file}_original.sc" "${scim_tmsu_file}_new.sc" | rg "> let") | |
rm "${scim_tmsu_file}_lookup" "${scim_tmsu_file}_original.sc" "${scim_tmsu_file}_new.sc" | |
# vim: set filetype=bash : | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment