]> Untitled Git - lemmy.git/commitdiff
Improve shell scripts (#705)
authorRichie Zhang <12566991+StaticallyTypedRice@users.noreply.github.com>
Mon, 11 May 2020 17:16:08 +0000 (10:16 -0700)
committerGitHub <noreply@github.com>
Mon, 11 May 2020 17:16:08 +0000 (13:16 -0400)
* Improve init-db.sh

Allow custom database parameters.
Abstract common functionality.

* Improve install.sh

Abstract common functionality.
Ask to automagically reload the project when source files are changed.

install.sh
server/db-init.sh

index d84761a2e408776d05c11795169ec169388de575..fb42b26d121110fe132a75255fa633e9cd08796e 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
 set -e
 
 # Set the database variable to the default first.
@@ -10,25 +10,55 @@ export LEMMY_DATABASE_URL=postgres://lemmy:password@localhost:5432/lemmy
 export JWT_SECRET=changeme
 export HOSTNAME=rrr
 
+yes_no_prompt_invalid() {
+  echo "Invalid input. Please enter either \"y\" or \"n\"." 1>&2
+}
+
+ask_to_init_db() {
+  init_db_valid=0
+  init_db_final=0
+  while [ "$init_db_valid" == 0 ]
+  do
+    read -p "Initialize database (y/n)? " init_db
+    case "$init_db" in
+      [yY]* ) init_db_valid=1; init_db_final=1;;
+      [nN]* ) init_db_valid=1; init_db_final=0;;
+      * ) yes_no_prompt_invalid;;
+    esac
+    echo
+  done
+  if [ "$init_db_final" = 1 ]
+  then
+    source ./server/db-init.sh
+    read -n 1 -s -r -p "Press ANY KEY to continue execution of this script, press CTRL+C to quit..."
+    echo
+  fi
+}
+
+ask_to_auto_reload() {
+  auto_reload_valid=0
+  auto_reload_final=0
+  while [ "$auto_reload_valid" == 0 ]
+  do
+    echo "Automagically reload the project when source files are changed?"
+    echo "ONLY ENABLE THIS FOR DEVELOPMENT!"
+    read -p "(y/n) " auto_reload
+    case "$auto_reload" in
+      [yY]* ) auto_reload_valid=1; auto_reload_final=1;;
+      [nN]* ) auto_reload_valid=1; auto_reload_final=0;;
+      * ) yes_no_prompt_invalid;;
+    esac
+    echo
+  done
+  if [ "$auto_reload_final" = 1 ]
+  then
+    cd ui && yarn start
+    cd server && cargo watch -x run
+  fi
+}
+
 # Optionally initialize the database
-init_db_valid=0
-init_db_final=0
-while [ "$init_db_valid" == 0 ]
-do
-  read -p "Initialize database (y/n)? " init_db
-  case "$init_db" in
-    [yY]* ) init_db_valid=1; init_db_final=1;;
-    [nN]* ) init_db_valid=1; init_db_final=0;;
-    * ) echo "Invalid input. Please enter either \"y\" or \"n\"." 1>&2;;
-  esac
-  echo
-done
-if [ "$init_db_final" = 1 ]
-then
-  source ./server/db-init.sh
-  read -n 1 -s -r -p "Press ANY KEY to continue execution of this script, press CTRL+C to quit..."
-  echo
-fi
+ask_to_init_db
 
 # Build the web client
 cd ui
@@ -39,6 +69,5 @@ yarn build
 cd ../server
 RUST_LOG=debug cargo run
 
-# For live coding, where both the front and back end, automagically reload on any save, do:
-# cd ui && yarn start
-# cd server && cargo watch -x run
+# For live coding, where both the front and back end, automagically reload on any save
+ask_to_auto_reload
index 87f39eadafd038d4deb02ec7d34a0ab8f670f64e..a2ad77b5945830dfb1e1973654d8bc99a8f79493 100755 (executable)
-#!/bin/bash
+#!/bin/sh
 
+# Default configurations
 username=lemmy
 dbname=lemmy
 port=5432
 
-password=""
-password_confirm=""
-password_valid=0
+yes_no_prompt_invalid() {
+  echo "Invalid input. Please enter either \"y\" or \"n\"." 1>&2
+}
 
-while [ "$password_valid" == 0 ]
-do
-  read -p "Enter database password: " -s password
-  echo
+print_config() {
+  echo "  database name: $dbname"
+  echo "  username: $username"
+  echo "  port: $port"
+}
 
-  read -p "Verify database password: " -s password_confirm
-  echo
+ask_for_db_config() {
+  echo "The default database configuration is:"
+  print_config
   echo
 
-  # Start the loop from the top if either check fails
-  if [ -z "$password" ]
-  then
-    echo "Error: Password cannot be empty." 1>&2
+  default_config_final=0
+  default_config_valid=0
+  while [ "$default_config_valid" == 0 ]
+  do
+    read -p "Use this configuration (y/n)? " default_config
+    case "$default_config" in
+      [yY]* ) default_config_valid=1; default_config_final=1;;
+      [nN]* ) default_config_valid=1; default_config_final=0;;
+      * ) yes_no_prompt_invalid;;
+    esac
     echo
-    continue
-  fi
-  if [ "$password" != "$password_confirm" ]
+  done
+
+  if [ "$default_config_final" == 0 ]
   then
-    echo "Error: Passwords don't match." 1>&2
-    echo
-    continue
+    config_ok_final=0
+    while [ "$config_ok_final" == 0 ]
+    do
+      read -p "Database name:  " dbname
+      read -p "Username:  " username
+      read -p "Port:  " port
+      #echo
+      
+      #echo "The database configuration is:"
+      #print_config
+      #echo
+      
+      config_ok_valid=0
+      while [ "$config_ok_valid" == 0 ]
+      do
+        read -p "Use this configuration (y/n)? " config_ok
+        case "$config_ok" in
+          [yY]* ) config_ok_valid=1; config_ok_final=1;;
+          [nN]* ) config_ok_valid=1; config_ok_final=0;;
+          * ) yes_no_prompt_invalid;;
+        esac
+        echo
+      done
+    done
   fi
+}
+
+ask_for_password() {
+  password=""
+  password_confirm=""
+  password_valid=0
+  while [ "$password_valid" == 0 ]
+  do
+    read -p "Enter database password: " -s password
+    echo
+
+    read -p "Verify database password: " -s password_confirm
+    echo
+    echo
 
-  # Set the password_valid variable to break out of the loop
-  password_valid=1
-done
+    # Start the loop from the top if either check fails
+    if [ -z "$password" ]
+    then
+      echo "Error: Password cannot be empty." 1>&2
+      echo
+      continue
+    fi
+    if [ "$password" != "$password_confirm" ]
+    then
+      echo "Error: Passwords don't match." 1>&2
+      echo
+      continue
+    fi
 
+    # Set the password_valid variable to break out of the loop
+    password_valid=1
+  done
+}
+
+ask_for_db_config
+
+ask_for_password
 
 psql -c "CREATE USER $username WITH PASSWORD '$password' SUPERUSER;" -U postgres
 psql -c "CREATE DATABASE $dbname WITH OWNER $username;" -U postgres
 export LEMMY_DATABASE_URL=postgres://$username:$password@localhost:$port/$dbname
 
-echo $LEMMY_DATABASE_URL
+echo "The database URL is $LEMMY_DATABASE_URL"
+