#!/bin/zsh ### Update antidote and its cloned bundles. # # usage: antidote update [-h|--help] # #function antidote-update { 0=${(%):-%x} emulate -L zsh; setopt local_options $_adote_funcopts local o_help o_self o_bundles zparseopts $_adote_zparopt_flags -- \ h=o_help -help=h \ s=o_self -self=s \ b=o_bundles -bundles=b || return 1 if (( $#o_help )); then antidote-help update return fi # colors local green normal if [[ $TERM = *256color* || $TERM = *rxvt* ]]; then if (( $+commands[tput] )); then green=$(tput setaf 2) normal=$(tput sgr0) else green=$'\E[32m' normal=$'\E[0m' fi fi if (( $#o_bundles )) || ! (( $#o_self )); then print "Updating bundles..." local bundledir url repo # remove zcompiled files __antidote_del -rf -- $(antidote-home)/**/*.zwc(N) # remove check file local loadable_check_path="$(antidote-home)/.antidote.load" [[ -r "$loadable_check_path" ]] && __antidote_del -- "$loadable_check_path" # update all bundles for bundledir in $(antidote-list --dirs); do url=$(git -C "$bundledir" config remote.origin.url) repo="${url:h:t}/${${url:t}%.git}" print "antidote: checking for updates: $url" () { local oldsha=$(git -C "$1" rev-parse --short HEAD) git -C "$1" pull --quiet --ff --rebase --autostash git -C "$1" submodule --quiet sync --recursive git -C "$1" submodule --quiet update --init --recursive --depth 1 local newsha=$(git -C "$1" rev-parse --short HEAD) if [[ $oldsha != $newsha ]]; then print "${green}antidote: updated: $2 ${oldsha} -> ${newsha}${normal}" git -C "$1" --no-pager log --oneline --ancestry-path ${oldsha}..${newsha} 2>/dev/null fi # recompile bundles if zstyle -t ":antidote:bundle:$repo" zcompile; then __antidote_bundle_zcompile $bundledir fi } "$bundledir" "$url" & done print "Waiting for bundle updates to complete..." print "" wait print "${green}Bundle updates complete.${normal}" print "" fi # update antidote if (( $#o_self )) || ! (( $#o_bundles )); then print "Updating antidote..." if [[ -d "${0:A:h:h}/.git" ]]; then git -C "${0:A:h:h}" pull --quiet --ff --rebase --autostash print "antidote self-update complete.\n" # setup antidote again (( $+functions[__antidote_setup] )) && unfunction __antidote_setup builtin autoload -Uz ${0:A:h}/__antidote_setup __antidote_setup # show antidote version antidote -v else print "Self updating is disabled in this build." print "Use your OS package manager to update antidote itself." fi fi #}