bf888680ea5b7161cf1d06011df33bfbeda8b255

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

Message

refactor(cli): extract substitution awk script in `plugin disable`

Diff

 1diff --git a/lib/cli.zsh b/lib/cli.zsh
 2index e490149e0e669df41b46b1310f9af8d1645b5b57..a10b0e1471aac0c35c94c15f25cb19afffd4f62c 100644
 3--- a/lib/cli.zsh
 4+++ b/lib/cli.zsh
 5@@ -226,13 +226,17 @@ function _omz::plugin::disable {
 6     return 1
 7   fi
 8 
 9+  # Remove plugins substitution awk script
10+  local awk_subst_plugins="\
11+  gsub(/\s+(${(j:|:)dis_plugins})/, \"\") # with spaces before
12+  gsub(/(${(j:|:)dis_plugins})\s+/, \"\") # with spaces after
13+  gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin)
14+"
15   # Disable plugins awk script
16   local awk_script="
17 # if plugins=() is in oneline form, substitute disabled plugins and go to next line
18 /^\s*plugins=\([^#]+\).*\$/ {
19-  gsub(/\s+(${(j:|:)dis_plugins})/, \"\") # with spaces before
20-  gsub(/(${(j:|:)dis_plugins})\s+/, \"\") # with spaces after
21-  gsub(/\((${(j:|:)dis_plugins})\)/, \"\") # without spaces (only plugin)
22+  $awk_subst_plugins
23   print \$0
24   next
25 }
26@@ -240,29 +244,22 @@ function _omz::plugin::disable {
27 # if plugins=() is in multiline form, enable multi flag and disable plugins if they're there
28 /^\s*plugins=\(/ {
29   multi=1
30-  gsub(/\s+(${(j:|:)dis_plugins})/, \"\")
31-  gsub(/(${(j:|:)dis_plugins})\s+/, \"\")
32-  gsub(/\((${(j:|:)dis_plugins})\)/, \"\")
33+  $awk_subst_plugins
34   print \$0
35   next
36 }
37 
38-# if multi flag is enabled and we find a valid closing parenthesis,
39-# add new plugins and disable multi flag
40+# if multi flag is enabled and we find a valid closing parenthesis, remove plugins and disable multi flag
41 multi == 1 && /^[^#]*\)/ {
42   multi=0
43-  gsub(/\s+(${(j:|:)dis_plugins})/, \"\")
44-  gsub(/(${(j:|:)dis_plugins})\s+/, \"\")
45-  gsub(/\((${(j:|:)dis_plugins})\)/, \"\")
46+  $awk_subst_plugins
47   print \$0
48   next
49 }
50 
51-multi == 1 {
52-  gsub(/\s+(${(j:|:)dis_plugins})/, \"\")
53-  gsub(/(${(j:|:)dis_plugins})\s+/, \"\")
54-  gsub(/\((${(j:|:)dis_plugins})\)/, \"\")
55-  print \$0
56+multi == 1 && length(\$0) > 0 {
57+  $awk_subst_plugins
58+  if (length(\$0) > 0) print \$0
59   next
60 }
61