summaryrefslogtreecommitdiff
path: root/.zsh/functions/cci
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/cci
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/cci')
-rw-r--r--.zsh/functions/cci77
1 files changed, 77 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