diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 488d08b..377e6f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,7 +30,7 @@ there are a number of additional things to keep in mind. - Local variables should be used whenever possible. - Prefer `zstyle` over environment variables for configuration. - - Use the `my_func()` syntax for defining functions. + - Use the function keyword to define functions. - The 80 character hard limit can be waved for readability. #### Using an Alternative zprezto Directory diff --git a/init.zsh b/init.zsh index eb16091..be56566 100644 --- a/init.zsh +++ b/init.zsh @@ -20,49 +20,51 @@ unset min_zsh_version # zprezto convenience updater # The function is surrounded by ( ) instead of { } so it starts in a subshell # and won't affect the environment of the calling shell -function zprezto-update () ( - function cannot-fast-forward { - local STATUS="$1" - [[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}" - printf "Unable to fast-forward the changes. You can fix this by " - printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}" - printf "to manually pull and possibly merge in changes\n" - } - cd -q -- "${ZPREZTODIR}" || return 7 - local orig_branch="$(git symbolic-ref HEAD 2>/dev/null | cut -d '/' -f 3)" - if [[ "$orig_branch" == "master" ]]; then - git fetch || return "$?" - local UPSTREAM=$(git rev-parse '@{u}') - local LOCAL=$(git rev-parse @) - local REMOTE=$(git rev-parse "$UPSTREAM") - local BASE=$(git merge-base @ "$UPSTREAM") - if [[ $LOCAL == $REMOTE ]]; then - printf "There are no updates.\n" - return 0 - elif [[ $LOCAL == $BASE ]]; then - printf "There is an update availible. Trying to pull.\n\n" - if git pull --ff-only; then - printf "Syncing submodules\n" - git submodule update --recursive - return $? +function zprezto-update { + ( + function cannot-fast-forward { + local STATUS="$1" + [[ -n "${STATUS}" ]] && printf "%s\n" "${STATUS}" + printf "Unable to fast-forward the changes. You can fix this by " + printf "running\ncd '%s' and then\n'git pull' " "${ZPREZTODIR}" + printf "to manually pull and possibly merge in changes\n" + } + cd -q -- "${ZPREZTODIR}" || return 7 + local orig_branch="$(git symbolic-ref HEAD 2>/dev/null | cut -d '/' -f 3)" + if [[ "$orig_branch" == "master" ]]; then + git fetch || return "$?" + local UPSTREAM=$(git rev-parse '@{u}') + local LOCAL=$(git rev-parse @) + local REMOTE=$(git rev-parse "$UPSTREAM") + local BASE=$(git merge-base @ "$UPSTREAM") + if [[ $LOCAL == $REMOTE ]]; then + printf "There are no updates.\n" + return 0 + elif [[ $LOCAL == $BASE ]]; then + printf "There is an update availible. Trying to pull.\n\n" + if git pull --ff-only; then + printf "Syncing submodules\n" + git submodule update --recursive + return $? + else + cannot-fast-forward + return 1 + fi + elif [[ $REMOTE == $BASE ]]; then + cannot-fast-forward "Commits in master that aren't in upstream." + return 1 else - cannot-fast-forward + cannot-fast-forward "Upstream and local have diverged." return 1 fi - elif [[ $REMOTE == $BASE ]]; then - cannot-fast-forward "Commits in master that aren't in upstream." - return 1 else - cannot-fast-forward "Upstream and local have diverged." + printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}" + printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}" return 1 fi - else - printf "zprezto install at '%s' is not on the master branch " "${ZPREZTODIR}" - printf "(you're on '%s')\nUnable to automatically update.\n" "${orig_branch}" return 1 - fi - return 1 -) + ) +} # # Module Loader #