Files
dotfiles/dot_local/bin/executable_gho
T

20 lines
917 B
Bash
Raw Normal View History

#!/bin/sh
# Pick a ghq repo or an Obsidian vault with fzf (tab toggles the list);
# prints the directory for the shell wrapper to cd into.
vaults="$HOME/Documents/Obsidian/Personal $HOME/Documents/Obsidian/Walletbase $HOME/Documents/Obsidian/Research"
# fzf runs bind actions with $SHELL -c; pin it to sh so the transform
# snippet below is interpreted consistently regardless of login shell.
selection=$(ghq list | SHELL=/bin/sh fzf --prompt="repo: " --tiebreak=end \
--bind "tab:transform:if [ \"\$FZF_PROMPT\" = 'repo: ' ]; then
echo \"change-prompt(vault: )+reload(printf '%s\\n' $vaults)\"
else
echo 'change-prompt(repo: )+reload(ghq list)'
fi") || exit 1
[ -n "$selection" ] || exit 1
# Vault entries are absolute paths; ghq entries are host/user/repo
case "$selection" in
/*) printf '%s\n' "$selection" ;;
*) printf '%s\n' "$(ghq root)/$selection" ;;
esac