8ae373130c8da1458323a196505355c710869e38

Author
Marc Cornellà <hello@mcornella.com>
Committer
Marc Cornellà <hello@mcornella.com>
Date

Message

fix(cli): respect `ZDOTDIR` in plugin/theme change commands (#10520)

Fixes #10520

Diff

  1diff --git a/lib/cli.zsh b/lib/cli.zsh
  2index 4917bc354cc0e8b748b6074c385d89a317012727..8cf8368e6d92864a44664a4526a5674fe81cd2bd 100644
  3--- a/lib/cli.zsh
  4+++ b/lib/cli.zsh
  5@@ -276,9 +276,10 @@ multi == 1 && length(\$0) > 0 {
  6 { print \$0 }
  7 "
  8 
  9-  awk "$awk_script" ~/.zshrc > ~/.zshrc.new \
 10-  && command mv -f ~/.zshrc ~/.zshrc.bck \
 11-  && command mv -f ~/.zshrc.new ~/.zshrc
 12+  local zdot="${ZDOTDIR:-$HOME}"
 13+  awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \
 14+  && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \
 15+  && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc"
 16 
 17   # Exit if the new .zshrc file wasn't created correctly
 18   [[ $? -eq 0 ]] || {
 19@@ -288,10 +289,10 @@ multi == 1 && length(\$0) > 0 {
 20   }
 21 
 22   # Exit if the new .zshrc file has syntax errors
 23-  if ! zsh -n ~/.zshrc; then
 24-    _omz::log error "broken syntax in ~/.zshrc. Rolling back changes..."
 25-    command mv -f ~/.zshrc ~/.zshrc.new
 26-    command mv -f ~/.zshrc.bck ~/.zshrc
 27+  if ! zsh -n "$zdot/.zshrc"; then
 28+    _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..."
 29+    command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new"
 30+    command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc"
 31     return 1
 32   fi
 33 
 34@@ -351,9 +352,10 @@ multi == 1 && /^[^#]*\)/ {
 35 { print \$0 }
 36 "
 37 
 38-  awk "$awk_script" ~/.zshrc > ~/.zshrc.new \
 39-  && command mv -f ~/.zshrc ~/.zshrc.bck \
 40-  && command mv -f ~/.zshrc.new ~/.zshrc
 41+  local zdot="${ZDOTDIR:-$HOME}"
 42+  awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \
 43+  && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \
 44+  && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc"
 45 
 46   # Exit if the new .zshrc file wasn't created correctly
 47   [[ $? -eq 0 ]] || {
 48@@ -363,10 +365,10 @@ multi == 1 && /^[^#]*\)/ {
 49   }
 50 
 51   # Exit if the new .zshrc file has syntax errors
 52-  if ! zsh -n ~/.zshrc; then
 53-    _omz::log error "broken syntax in ~/.zshrc. Rolling back changes..."
 54-    command mv -f ~/.zshrc ~/.zshrc.new
 55-    command mv -f ~/.zshrc.bck ~/.zshrc
 56+  if ! zsh -n "$zdot/.zshrc"; then
 57+    _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..."
 58+    command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new"
 59+    command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc"
 60     return 1
 61   fi
 62 
 63@@ -698,17 +700,18 @@ END {
 64 }
 65 '
 66 
 67-  awk "$awk_script" ~/.zshrc > ~/.zshrc.new \
 68+  local zdot="${ZDOTDIR:-$HOME}"
 69+  awk "$awk_script" "$zdot/.zshrc" > "$zdot/.zshrc.new" \
 70   || {
 71     # Prepend ZSH_THEME= line to .zshrc if it doesn't exist
 72     cat <<EOF
 73 ZSH_THEME="$1" # set by \`omz\`
 74 
 75 EOF
 76-    cat ~/.zshrc
 77-  } > ~/.zshrc.new \
 78-  && command mv -f ~/.zshrc ~/.zshrc.bck \
 79-  && command mv -f ~/.zshrc.new ~/.zshrc
 80+    cat "$zdot/.zshrc"
 81+  } > "$zdot/.zshrc.new" \
 82+  && command mv -f "$zdot/.zshrc" "$zdot/.zshrc.bck" \
 83+  && command mv -f "$zdot/.zshrc.new" "$zdot/.zshrc"
 84 
 85   # Exit if the new .zshrc file wasn't created correctly
 86   [[ $? -eq 0 ]] || {
 87@@ -718,10 +721,10 @@ EOF
 88   }
 89 
 90   # Exit if the new .zshrc file has syntax errors
 91-  if ! zsh -n ~/.zshrc; then
 92-    _omz::log error "broken syntax in ~/.zshrc. Rolling back changes..."
 93-    command mv -f ~/.zshrc ~/.zshrc.new
 94-    command mv -f ~/.zshrc.bck ~/.zshrc
 95+  if ! zsh -n "$zdot/.zshrc"; then
 96+    _omz::log error "broken syntax in '"${zdot/#$HOME/\~}/.zshrc"'. Rolling back changes..."
 97+    command mv -f "$zdot/.zshrc" "$zdot/.zshrc.new"
 98+    command mv -f "$zdot/.zshrc.bck" "$zdot/.zshrc"
 99     return 1
100   fi
101