Browse Source
Improve shell scripts (#705)
Improve shell scripts (#705)
* 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.pull/269/head
committed by
GitHub
2 changed files with 138 additions and 46 deletions
-
73install.sh
-
111server/db-init.sh
@ -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:[email protected]: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 |
@ -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 |
|||
export LEMMY_DATABASE_URL=postgres://$username:$password@localhost:$port/$dbname |
|||
|
|||
echo $LEMMY_DATABASE_URL |
|||
echo "The database URL is $LEMMY_DATABASE_URL" |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue