diff options
| author | Marc Cornellà <marc@mcornella.com> | 2024-04-18 07:33:13 +0200 |
|---|---|---|
| committer | Marc Cornellà <marc@mcornella.com> | 2024-04-18 07:33:13 +0200 |
| commit | 56cfcb44e7ff730c10c5a00b58f38c33c984c52e (patch) | |
| tree | e6bb2677d21b183ea6e05cfb9a2286c6d0f3ee6d | |
| parent | c262ffbb68e6dfc30b619e6ce6bdbd00f27b8a71 (diff) | |
| download | zsh-56cfcb44e7ff730c10c5a00b58f38c33c984c52e.tar.gz zsh-56cfcb44e7ff730c10c5a00b58f38c33c984c52e.tar.bz2 zsh-56cfcb44e7ff730c10c5a00b58f38c33c984c52e.zip | |
fix(updater): abort update if `$ZSH` is not a git repository
Fixes #12298
| -rw-r--r-- | lib/cli.zsh | 12 | ||||
| -rw-r--r-- | tools/check_for_upgrade.sh | 10 |
2 files changed, 17 insertions, 5 deletions
diff --git a/lib/cli.zsh b/lib/cli.zsh index aa36a6ab5..4a8d4d127 100644 --- a/lib/cli.zsh +++ b/lib/cli.zsh @@ -773,7 +773,17 @@ function _omz::theme::use { } function _omz::update { - local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD) + # Check if git command is available + (( $+commands[git] )) || { + _omz::log error "git is not installed. Aborting..." + return 1 + } + + local last_commit=$(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null) + [[ $? -eq 0 ]] || { + _omz::log error "\`$ZSH\` is not a git directory. Aborting..." + return 1 + } # Run update script zstyle -s ':omz:update' verbose verbose_mode || verbose_mode=default diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh index 1cc193bde..a5d2112f6 100644 --- a/tools/check_for_upgrade.sh +++ b/tools/check_for_upgrade.sh @@ -20,14 +20,16 @@ zstyle -s ':omz:update' mode update_mode || { } # Cancel update if: -# - the automatic update is disabled. -# - the current user doesn't have write permissions nor owns the $ZSH directory. +# - the automatic update is disabled +# - the current user doesn't have write permissions nor owns the $ZSH directory # - is not run from a tty -# - git is unavailable on the system. +# - git is unavailable on the system +# - $ZSH is not a git repository if [[ "$update_mode" = disabled ]] \ || [[ ! -w "$ZSH" || ! -O "$ZSH" ]] \ || [[ ! -t 1 ]] \ - || ! command git --version 2>&1 >/dev/null; then + || ! command git --version 2>&1 >/dev/null + || (builtin cd -q "$ZSH"; ! command git rev-parse --is-inside-work-tree &>/dev/null); then unset update_mode return fi |
