initial commit.
This commit is contained in:
80
setup.sh
Executable file
80
setup.sh
Executable file
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
# env setup script for docker compose .env setup
|
||||
# 2023-01-06 by dede & dany
|
||||
|
||||
env_sample="env.sample"
|
||||
|
||||
dirname=$(basename "$(dirname "${BASH_SOURCE[0]}")")
|
||||
echo "$dirname docker compose setup"
|
||||
echo "> env setup for $dirname with docker compose"
|
||||
|
||||
# check for existing .env file to not break an existing setup
|
||||
if [[ -f .env ]]; then
|
||||
if [[ "$1" == "-f" ]]; then
|
||||
echo ".env file already exists. force param is set. .env will be overwritten."
|
||||
else
|
||||
echo ".env file already exists. setup will not run."\
|
||||
"either rename/delete it first or run this script with force param like this: "
|
||||
echo "$ ./${0##*/} -f"
|
||||
exit 1
|
||||
fi
|
||||
elif [[ ! -f $env_sample ]]; then
|
||||
echo "> $env_sample file is missing. cannot run."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# create .env file
|
||||
echo -e "# file generated by ${0##*/} on $(date +"%F %H:%M") by $USER\n" > .env
|
||||
|
||||
# step through the list of lines and ask for each key to use default value or set value
|
||||
# for each line in configfile
|
||||
while read -r -u 3 line; do
|
||||
|
||||
# keep blank and comment lines
|
||||
if [[ -z $line ]] || [[ $line == \#* ]]; then
|
||||
echo "$line" >> .env
|
||||
|
||||
# handle variable lines
|
||||
else
|
||||
# split line by '=' into key and value
|
||||
readarray -d "=" -t currvar<<< "$line"
|
||||
|
||||
# preset value with default
|
||||
value=${currvar[1]::-1}
|
||||
|
||||
# check if there's a password to generate
|
||||
if [[ ${currvar[0]} =~ (PASS|PASSWORD|PWD|PASSWD)$ ]]; then
|
||||
value=$(openssl rand -base64 29 | tr -d "=+/" | cut -c1-25)
|
||||
fi
|
||||
|
||||
# ask for user input
|
||||
echo -n "please enter value for ${currvar[0]} [$value]: "
|
||||
read -r userinput
|
||||
|
||||
# set userinput as new value if any
|
||||
if [ -n "$userinput" ]; then
|
||||
value=$userinput
|
||||
fi
|
||||
|
||||
# check if there's a directory to create
|
||||
if [[ ${currvar[0]} =~ (DIR|DIRECTORY)$ ]]; then
|
||||
if [[ ! -d $value ]]; then
|
||||
echo -n "do you want to create the directory? [Y/n]: "
|
||||
read -r createdir
|
||||
if [[ $createdir =~ ^([yY]|)$ ]]; then
|
||||
mkdir -p "$value"
|
||||
echo "directory created."
|
||||
fi
|
||||
else
|
||||
echo "directory already exists."
|
||||
if [ -n "$(ls -A "$value")" ]; then
|
||||
echo "WATCH OUT! the directory is NOT empty. please ensure this is intended."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# now append the line
|
||||
echo "${currvar[0]}=$value" >> .env
|
||||
|
||||
fi
|
||||
done 3< $env_sample
|
||||
Reference in New Issue
Block a user