diff options
author | René Neumann <rene.neumann@in.tum.de> | 2011-08-10 20:22:31 +0200 |
---|---|---|
committer | René Neumann <rene.neumann@in.tum.de> | 2011-08-10 20:22:32 +0200 |
commit | aa53962b9540dce996b183a5cd6e14274cfeec0f (patch) | |
tree | b873192164f81a7714e75c5f30239944e384cc99 /.zsh/functions/open_ebuild | |
parent | 0d3c5d8badbdf8892ed586a30033fd02ee361372 (diff) | |
download | dotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.tar.gz dotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.tar.bz2 dotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.zip |
Moved some functions to their own files
Diffstat (limited to '')
-rw-r--r-- | .zsh/functions/open_ebuild | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/.zsh/functions/open_ebuild b/.zsh/functions/open_ebuild new file mode 100644 index 0000000..dedecb3 --- /dev/null +++ b/.zsh/functions/open_ebuild @@ -0,0 +1,43 @@ +# Open the ebuild with a specified command +local ebuild sel +local -a elist + +if [[ $# -lt 2 ]]; then + echo "No package name given." + return 4 +fi + +ebuild="$(equery w $2 2>&1 )" +if [[ $? -ne 0 ]]; then + if [[ $ebuild == *"Ambiguous"* ]]; then + elist=(${(f)ebuild}) + + # remove the first line + shift elist + + echo "Ambiguous package name '$2' -- choose from: " + cat -n <<< ${(F)elist} + read "sel?Selection: " + + if [[ -z $elist[$sel] ]]; then + echo "Invalid choice." + return 1 + else + # the "=" is needed to strip the leading spaces and the quotes + open_ebuild $1 ${=elist[$sel]} + return $? + fi + + elif [[ $ebuild == *"No packages matching"* ]]; then + echo "Trying masked packages too..." + ebuild=$(equery w -m $2 2>&1) + fi +fi + +if [[ $? -eq 0 ]]; then + $1 $ebuild +else + echo "No ebuild found" +fi + +# vim: ft=zsh |