gg.sh: lint

main
Motiejus Jakštys 2024-04-12 14:57:54 +03:00 committed by Motiejus Jakštys
parent dc807af16e
commit c92fc2382f
1 changed files with 18 additions and 14 deletions

View File

@ -1,31 +1,37 @@
maxdepth=5 # shellcheck shell=bash
_gopath=$(git rev-parse --show-toplevel) _GG_MAXDEPTH=5
gg() { gg() {
paths=($(g "$@")) local _gopath
path_index=0 _gopath=$(git rev-parse --show-toplevel)
local paths=($(g "$@"))
local path_index=0
if [ ${#paths[@]} -gt 1 ]; then if [ ${#paths[@]} -gt 1 ]; then
c=1 local c=1
for path in "${paths[@]}"; do for path in "${paths[@]}"; do
echo [$c]: cd ${_gopath}/${path} echo "[$c]: cd ${_gopath}/${path}"
c=$((c+1)) c=$((c+1))
done done
echo -n "Go to which path: " echo -n "Go to which path: "
read path_index read -r path_index
path_index=$(($path_index-1)) path_index=$((path_index-1))
fi fi
path=${paths[$path_index]} local path=${paths[$path_index]}
cd $_gopath/$path cd "$_gopath/$path" || {
>&2 echo "?"
exit 1
}
} }
# #
# Print the directories of the specified Go package name. # Print the directories of the specified Go package name.
# #
g() { g() {
local pkg_candidates="$((cd $_gopath && find . -mindepth 1 -maxdepth ${maxdepth} -type d -path "*/$1" -and -not -path '*/vendor/*' -print) | sed 's/^\.\///g')" local pkg_candidates
pkg_candidates="$( (cd "$_gopath" && find . -mindepth 1 -maxdepth ${_GG_MAXDEPTH} -type d -path "*/$1" -and -not -path '*/vendor/*' -print) | sed 's/^\.\///g')"
echo "$pkg_candidates" | awk '{print length, $0 }' | sort -n | awk '{print $2}' echo "$pkg_candidates" | awk '{print length, $0 }' | sort -n | awk '{print $2}'
} }
# #
@ -35,10 +41,8 @@ _g_complete()
{ {
COMPREPLY=() COMPREPLY=()
local cur local cur
local prev
cur="${COMP_WORDS[COMP_CWORD]}" cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}" COMPREPLY=( $(compgen -W "$(for f in $(find "$_gopath" -mindepth 1 -maxdepth ${_GG_MAXDEPTH} -type d -name "${cur}*" ! -name '.*' ! -path '*/.git/*' ! -path '*/test/*' ! -path '*/vendor/*'); do echo "${f##*/}"; done)" -- "$cur") )
COMPREPLY=( $(compgen -W "$(for f in $(find "$_gopath" -mindepth 1 -maxdepth ${maxdepth} -type d -name "${cur}*" ! -name '.*' ! -path '*/.git/*' ! -path '*/test/*' ! -path '*/vendor/*'); do echo "${f##*/}"; done)" -- "$cur") )
return 0 return 0
} }
complete -F _g_complete g complete -F _g_complete g