summaryrefslogtreecommitdiffstats
path: root/server/db-init.sh
diff options
context:
space:
mode:
Diffstat (limited to 'server/db-init.sh')
-rwxr-xr-xserver/db-init.sh113
1 files changed, 88 insertions, 25 deletions
diff --git a/server/db-init.sh b/server/db-init.sh
index c9150e9d..a2ad77b5 100755
--- a/server/db-init.sh
+++ b/server/db-init.sh
@@ -1,43 +1,106 @@
-#!/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
+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"
+