]> Untitled Git - lemmy.git/blob - db-init.sh
routes.api: fix get_captcha endpoint (#1135)
[lemmy.git] / db-init.sh
1 #!/bin/bash
2 set -e
3
4 # Default configurations
5 username=lemmy
6 dbname=lemmy
7 port=5432
8
9 yes_no_prompt_invalid() {
10   echo "Invalid input. Please enter either \"y\" or \"n\"." 1>&2
11 }
12
13 print_config() {
14   echo "  database name: $dbname"
15   echo "  username: $username"
16   echo "  port: $port"
17 }
18
19 ask_for_db_config() {
20   echo "The default database configuration is:"
21   print_config
22   echo
23
24   default_config_final=0
25   default_config_valid=0
26   while [ "$default_config_valid" == 0 ]
27   do
28     read -p "Use this configuration (y/n)? " default_config
29     case "$default_config" in
30       [yY]* ) default_config_valid=1; default_config_final=1;;
31       [nN]* ) default_config_valid=1; default_config_final=0;;
32       * ) yes_no_prompt_invalid;;
33     esac
34     echo
35   done
36
37   if [ "$default_config_final" == 0 ]
38   then
39     config_ok_final=0
40     while [ "$config_ok_final" == 0 ]
41     do
42       read -p "Database name:  " dbname
43       read -p "Username:  " username
44       read -p "Port:  " port
45       #echo
46       
47       #echo "The database configuration is:"
48       #print_config
49       #echo
50       
51       config_ok_valid=0
52       while [ "$config_ok_valid" == 0 ]
53       do
54         read -p "Use this configuration (y/n)? " config_ok
55         case "$config_ok" in
56           [yY]* ) config_ok_valid=1; config_ok_final=1;;
57           [nN]* ) config_ok_valid=1; config_ok_final=0;;
58           * ) yes_no_prompt_invalid;;
59         esac
60         echo
61       done
62     done
63   fi
64 }
65
66 ask_for_password() {
67   password=""
68   password_confirm=""
69   password_valid=0
70   while [ "$password_valid" == 0 ]
71   do
72     read -p "Enter database password: " -s password
73     echo
74
75     read -p "Verify database password: " -s password_confirm
76     echo
77     echo
78
79     # Start the loop from the top if either check fails
80     if [ -z "$password" ]
81     then
82       echo "Error: Password cannot be empty." 1>&2
83       echo
84       continue
85     fi
86     if [ "$password" != "$password_confirm" ]
87     then
88       echo "Error: Passwords don't match." 1>&2
89       echo
90       continue
91     fi
92
93     # Set the password_valid variable to break out of the loop
94     password_valid=1
95   done
96 }
97
98 ask_for_db_config
99
100 ask_for_password
101
102 psql -c "CREATE USER $username WITH PASSWORD '$password' SUPERUSER;" -U postgres
103 psql -c "CREATE DATABASE $dbname WITH OWNER $username;" -U postgres
104 export LEMMY_DATABASE_URL=postgres://$username:$password@localhost:$port/$dbname
105
106 echo "The database URL is $LEMMY_DATABASE_URL"
107