1eea23bcfe
* 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.
106 lines
2.4 KiB
Bash
Executable file
Vendored
106 lines
2.4 KiB
Bash
Executable file
Vendored
#!/bin/sh
|
|
|
|
# Default configurations
|
|
username=lemmy
|
|
dbname=lemmy
|
|
port=5432
|
|
|
|
yes_no_prompt_invalid() {
|
|
echo "Invalid input. Please enter either \"y\" or \"n\"." 1>&2
|
|
}
|
|
|
|
print_config() {
|
|
echo " database name: $dbname"
|
|
echo " username: $username"
|
|
echo " port: $port"
|
|
}
|
|
|
|
ask_for_db_config() {
|
|
echo "The default database configuration is:"
|
|
print_config
|
|
echo
|
|
|
|
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
|
|
done
|
|
|
|
if [ "$default_config_final" == 0 ]
|
|
then
|
|
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
|
|
|
|
# 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 "The database URL is $LEMMY_DATABASE_URL"
|
|
|