zsh-goto/label

39 lines
832 B
Bash
Executable file

#!/usr/bin/env zsh
: "${1:=--help}"
case "$1" in
-h|--help|help)
cat <<EOF
Usage:
$ label [add | get | rm | ls]
Set, list or manipulate configured labeles.
Note: the words 'help' and 'ls' among others are reserved, and cannot be labeled.
EOF
;;
add)
label rm "$2"
_zsh_goto_sed -i '/^$/d' "$(_goto_file)" # Remove empty lines
_zsh_goto_sed -i -e '$a\' "$(_goto_file)" # Fix potentially missing last newline
printf '%s %s\n' "${2}" $(realpath "${3:-$PWD}" | _zsh_goto_sed "s^${HOME}^~^g") >> "$(_goto_file)"
;;
get)
realpath "$(_awk "/^$2\s/ {print \$2;exit}" `_goto_file` | _zsh_goto_sed "s|^~|$HOME|")"
;;
rm)
_zsh_goto_sed -i "/$2/d" "$(_goto_file)"
;;
ls)
_awk '{print $1;}' "$(_goto_file)"
;;
*)
echo "Unknown command: $@" >&2
exit 1
;;
esac