# 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