summaryrefslogtreecommitdiff
path: root/.zsh/functions/open_ebuild
diff options
context:
space:
mode:
authorRené Neumann <rene.neumann@in.tum.de>2011-08-10 20:22:31 +0200
committerRené Neumann <rene.neumann@in.tum.de>2011-08-10 20:22:32 +0200
commitaa53962b9540dce996b183a5cd6e14274cfeec0f (patch)
treeb873192164f81a7714e75c5f30239944e384cc99 /.zsh/functions/open_ebuild
parent0d3c5d8badbdf8892ed586a30033fd02ee361372 (diff)
downloaddotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.tar.gz
dotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.tar.bz2
dotfiles-aa53962b9540dce996b183a5cd6e14274cfeec0f.zip
Moved some functions to their own files
Diffstat (limited to '.zsh/functions/open_ebuild')
-rw-r--r--.zsh/functions/open_ebuild43
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