summaryrefslogtreecommitdiff
path: root/.zsh/functions
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--.zsh/functions/cci77
-rw-r--r--.zsh/functions/open_ebuild43
2 files changed, 120 insertions, 0 deletions
diff --git a/.zsh/functions/cci b/.zsh/functions/cci
new file mode 100644
index 0000000..4baaa7d
--- /dev/null
+++ b/.zsh/functions/cci
@@ -0,0 +1,77 @@
+# Commit a new config change
+# Works only for simple cases
+_ask_$0 ()
+{
+ echo -n "Is this ok? [y/n] "
+
+ if ! read -q; then
+ echo
+ echo "I would have done the wrong thing ... aborting!"
+ return 2
+ else
+ echo
+ fi
+}
+
+if [[ $# == 0 ]]; then
+ echo "No message given. Aborting."
+ return 1
+fi
+
+local message=$1
+local tok=__cci__
+
+pushd -q ~
+
+local indexed="$(config status --porcelain | grep -v '^ ')"
+
+if [[ -n $indexed ]]; then
+ echo ">> Stuff in index -- only commiting this"
+ echo "$indexed"
+ _ask_$0 || return 2
+else
+ echo ">> Nothing in index -- commiting everything which has changed"
+ echo "$(config status)"
+
+ _ask_$0 || return 2
+ config add -u
+fi
+
+cstg diff -O --cached
+_ask_$0 || return 2
+
+echo ">> Creating new patch"
+cstg new $tok -m "$message"
+
+echo ">> Refreshing"
+cstg refresh -i
+
+if [[ -z $(cstg files) ]]; then
+ echo
+ echo "Ehm - this patch is empty. Narf. Aborting!"
+ echo "Deleting useless patch"
+ cstg del $tok
+ return 3
+fi
+
+echo ">> Committing"
+cstg commit $tok
+
+if [[ -n $(cstg series --applied) ]]; then
+ echo
+ echo "Urgs! Something went wrong. There are still patches applied."
+ echo "Clean up for yourself. Aborting here!"
+ return 4
+fi
+
+echo ">> Pushing to remote"
+config push
+
+echo ">> Re-apply patches"
+cstg push -a -k
+
+echo ">> Done"
+
+popd -q
+
+# vim: ft=zsh
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