summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/cli.zsh12
-rw-r--r--tools/check_for_upgrade.sh10
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