diff options
Diffstat (limited to '')
-rw-r--r-- | .zsh/functions/cci | 77 | ||||
-rw-r--r-- | .zsh/functions/open_ebuild | 43 |
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 |