Преглед изворни кода

feat(installer): ensure correct responses when prompting user (#2506)

William Boman пре 3 година
родитељ
комит
84d91bd3be
1 измењених фајлова са 28 додато и 11 уклоњено
  1. 28 11
      utils/installer/install.sh

+ 28 - 11
utils/installer/install.sh

@@ -85,6 +85,25 @@ function msg() {
   printf "%s\n" "$text"
   printf "%s\n" "$text"
 }
 }
 
 
+function confirm() {
+  local question="$1"
+  while true; do
+    msg "$question"
+    read -p "[y]es or [n]o (default: no) : " -r answer
+    case "$answer" in
+      y | Y | yes | YES | Yes)
+        return 0
+        ;;
+      n | N | no | NO | No | *[[:blank:]]* | "")
+        return 1
+        ;;
+      *)
+        msg "Please answer [y]es or [n]o."
+        ;;
+    esac
+  done
+}
+
 function main() {
 function main() {
   parse_arguments "$@"
   parse_arguments "$@"
 
 
@@ -97,17 +116,15 @@ function main() {
 
 
   if [ "$ARGS_INSTALL_DEPENDENCIES" -eq 1 ]; then
   if [ "$ARGS_INSTALL_DEPENDENCIES" -eq 1 ]; then
     if [ "$INTERACTIVE_MODE" -eq 1 ]; then
     if [ "$INTERACTIVE_MODE" -eq 1 ]; then
-      msg "Would you like to install LunarVim's NodeJS dependencies?"
-      read -p "[y]es or [n]o (default: no) : " -r answer
-      [ "$answer" != "${answer#[Yy]}" ] && install_nodejs_deps
-
-      msg "Would you like to install LunarVim's Python dependencies?"
-      read -p "[y]es or [n]o (default: no) : " -r answer
-      [ "$answer" != "${answer#[Yy]}" ] && install_python_deps
-
-      msg "Would you like to install LunarVim's Rust dependencies?"
-      read -p "[y]es or [n]o (default: no) : " -r answer
-      [ "$answer" != "${answer#[Yy]}" ] && install_rust_deps
+      if confirm "Would you like to install LunarVim's NodeJS dependencies?"; then
+        install_nodejs_deps
+      fi
+      if confirm "Would you like to install LunarVim's Python dependencies?"; then
+        install_python_deps
+      fi
+      if confirm "Would you like to install LunarVim's Rust dependencies?"; then
+        install_rust_deps
+      fi
     else
     else
       install_nodejs_deps
       install_nodejs_deps
       install_python_deps
       install_python_deps