add gg.sh
This commit is contained in:
parent
23ec7f5e1f
commit
dc807af16e
@ -210,9 +210,10 @@ in {
|
|||||||
bash = {
|
bash = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
"l" = "echo -n ł | xclip -selection clipboard";
|
"l" = "echo -n ł | ${pkgs.xclip}/bin/xclip -selection clipboard";
|
||||||
"gp" = "${pkgs.git}/bin/git remote | ${pkgs.parallel}/bin/parallel --verbose git push";
|
"gp" = "${pkgs.git}/bin/git remote | ${pkgs.parallel}/bin/parallel --verbose git push";
|
||||||
};
|
};
|
||||||
|
initExtra = "source ${./gg.sh}";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
45
shared/home/gg.sh
Normal file
45
shared/home/gg.sh
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
maxdepth=5
|
||||||
|
_gopath=$(git rev-parse --show-toplevel)
|
||||||
|
|
||||||
|
gg() {
|
||||||
|
paths=($(g "$@"))
|
||||||
|
path_index=0
|
||||||
|
|
||||||
|
if [ ${#paths[@]} -gt 1 ]; then
|
||||||
|
c=1
|
||||||
|
for path in "${paths[@]}"; do
|
||||||
|
echo [$c]: cd ${_gopath}/${path}
|
||||||
|
c=$((c+1))
|
||||||
|
done
|
||||||
|
echo -n "Go to which path: "
|
||||||
|
read path_index
|
||||||
|
|
||||||
|
path_index=$(($path_index-1))
|
||||||
|
fi
|
||||||
|
|
||||||
|
path=${paths[$path_index]}
|
||||||
|
cd $_gopath/$path
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Print the directories of the specified Go package name.
|
||||||
|
#
|
||||||
|
g() {
|
||||||
|
local pkg_candidates="$((cd $_gopath && find . -mindepth 1 -maxdepth ${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}'
|
||||||
|
}
|
||||||
|
#
|
||||||
|
# Bash autocomplete for g and gg functions.
|
||||||
|
#
|
||||||
|
_g_complete()
|
||||||
|
{
|
||||||
|
COMPREPLY=()
|
||||||
|
local cur
|
||||||
|
local prev
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
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
|
||||||
|
}
|
||||||
|
complete -F _g_complete g
|
||||||
|
complete -F _g_complete gg
|
Loading…
Reference in New Issue
Block a user