40bfe5a4124be7b5983756cc81b54a4a4d5846e6

Author
Fabian Wolff <fabi.wolff@arcor.de>
Committer
Marc Cornellà <marc.cornella@live.com>
Date

Message

Implement a locking mechanism to avoid multiple update prompts (fixes #3766)

Diff

 1diff --git a/tools/check_for_upgrade.sh b/tools/check_for_upgrade.sh
 2index bd9aba8be1d90aa8021f3eb3de951d10d2b9d967..d1b174c6deb01eac89920f0ad6ce801b94c2fc4d 100644
 3--- a/tools/check_for_upgrade.sh
 4+++ b/tools/check_for_upgrade.sh
 5@@ -29,31 +29,36 @@ fi
 6 # Cancel upgrade if git is unavailable on the system
 7 whence git >/dev/null || return 0
 8 
 9-if [ -f ~/.zsh-update ]
10+if mkdir "$ZSH/log/update.lock" 2>/dev/null
11 then
12-  . ~/.zsh-update
13+  if [ -f ~/.zsh-update ]
14+  then
15+    . ~/.zsh-update
16 
17-  if [[ -z "$LAST_EPOCH" ]]; then
18-    _update_zsh_update && return 0;
19-  fi
20+    if [[ -z "$LAST_EPOCH" ]]; then
21+      _update_zsh_update && return 0;
22+    fi
23 
24-  epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
25-  if [ $epoch_diff -gt $epoch_target ]
26-  then
27-    if [ "$DISABLE_UPDATE_PROMPT" = "true" ]
28+    epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
29+    if [ $epoch_diff -gt $epoch_target ]
30     then
31-      _upgrade_zsh
32-    else
33-      echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c"
34-      read line
35-      if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
36+      if [ "$DISABLE_UPDATE_PROMPT" = "true" ]
37+      then
38         _upgrade_zsh
39       else
40-        _update_zsh_update
41+        echo "[Oh My Zsh] Would you like to check for updates? [Y/n]: \c"
42+        read line
43+        if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
44+          _upgrade_zsh
45+        else
46+          _update_zsh_update
47+        fi
48       fi
49     fi
50+  else
51+    # create the zsh file
52+    _update_zsh_update
53   fi
54-else
55-  # create the zsh file
56-  _update_zsh_update
57+
58+  rm -r $ZSH/log/update.lock
59 fi