Browse Source

message formatting and some minor refactoring

pull/7587/head
starbirdtech383 10 months ago
parent
commit
0722881485
  1. 24
      docker-compose/aio/install.sh
  2. 12
      docker-compose/aio/pre-req-check.sh
  3. 19
      docker-compose/aio/prepare_env.sh
  4. 6
      docker-compose/aio/sbin/install_vars.sh
  5. 2
      docker-compose/aio/sbin/util.sh

24
docker-compose/aio/install.sh

@ -11,34 +11,18 @@
# c. docker repo accessiblity quay.io/minio/minio:RELEASE.2023-12-09T18-17-51Z, redis:latest, postgres:14.7, nocodb/nocodb:latest, nginx # c. docker repo accessiblity quay.io/minio/minio:RELEASE.2023-12-09T18-17-51Z, redis:latest, postgres:14.7, nocodb/nocodb:latest, nginx
# d. licence check (tbd) # d. licence check (tbd)
## utility functions
asksure() {
echo -n "Are you sure (Y/N)? "
while read -r -n 1 -s answer; do
if [[ $answer = [YyNn] ]]; then
[[ $answer = [Yy] ]] && retval=0
[[ $answer = [Nn] ]] && retval=1
break
fi
done
echo # just a final linefeed, optics...
return $retval
}
# -- main line code starts here # -- main line code starts here
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
## utility functions
source ${SCRIPT_DIR}/sbin/util.sh
${SCRIPT_DIR}/pre-req-check.sh ${SCRIPT_DIR}/pre-req-check.sh
PRE_REQ_SUCCESS=$? PRE_REQ_SUCCESS=$?
if [[ ${PRE_REQ_SUCCESS} != 0 ]] if [[ ${PRE_REQ_SUCCESS} != 0 ]]
then then
echo "Few pre-requisites are failing.\n Recommend to resolve and proceed.\n However you could still proceed to install" >&2 echo "** Few pre-requisites are failing. Recommend to resolve and proceed. However you could still proceed to install **" >&2
else else
echo "All pre-requistites are taken care of. Proceed to install.." echo "** All pre-requistites are taken care of. Proceed to install.. **"
fi fi
if asksure; then if asksure; then

12
docker-compose/aio/pre-req-check.sh

@ -17,14 +17,14 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
source ${SCRIPT_DIR}/sbin/util.sh source ${SCRIPT_DIR}/sbin/util.sh
source ${SCRIPT_DIR}/sbin/install_vars.sh source ${SCRIPT_DIR}/sbin/install_vars.sh
echo "Performing nocodb system check and setup. This step may require sudo permissions to" echo "Performing nocodb system check and setup. This step may require sudo permissions to"
echo "Check if ports are accessible" echo " | Check if ports are accessible"
PRE_REQ=0 PRE_REQ=0
# d. Check if required tools are installed # d. Check if required tools are installed
echo "Checking if required tools (docker, docker-compose, jq, lsof) are installed..." echo "Checking if required tools (docker, docker-compose, jq, lsof) are installed..."
for tool in docker docker-compose lsof; do for tool in docker docker-compose lsof; do
if ! command -v "$tool" &> /dev/null; then if ! command -v "$tool" &> /dev/null; then
echo "Error: $tool is not installed. Please install it before proceeding." echo " | Error: $tool is not installed. Please install it before proceeding."
exit 1 exit 1
fi fi
done done
@ -36,13 +36,13 @@ done
# echo "NocoDB version: $nocodb_install_version" # echo "NocoDB version: $nocodb_install_version"
# f. Port mapping check # f. Port mapping check
echo "Checking port accessibility..." echo " | Checking port accessibility..."
for port in "${REQUIRED_PORTS[@]}"; do for port in "${REQUIRED_PORTS[@]}"; do
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null; then if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null; then
echo "Port $port is in use. Please make sure it is free." >&2 echo " | Port $port is in use. Please make sure it is free." >&2
PRE_REQ=1 PRE_REQ=1
else else
echo "Port $port is free." echo " | Port $port is free."
fi fi
done done
@ -57,5 +57,5 @@ done
# fi # fi
# done # done
echo "System check completed successfully." echo "** System check completed successfully. **"
exit $PRE_REQ exit $PRE_REQ

19
docker-compose/aio/prepare_env.sh

@ -18,6 +18,7 @@ fi
function acceptProperty(){ function acceptProperty(){
local varDetail="$1" local varDetail="$1"
local promptUser="${2:-true}"
prompt=$(echo "$varDetail" | cut -d '|' -f1) prompt=$(echo "$varDetail" | cut -d '|' -f1)
prop=$(echo "$varDetail" | cut -d '|' -f2) prop=$(echo "$varDetail" | cut -d '|' -f2)
key=$(echo "$prop" | cut -d'=' -f1) key=$(echo "$prop" | cut -d'=' -f1)
@ -29,7 +30,9 @@ function acceptProperty(){
# echo key: ${key} # echo key: ${key}
# echo default_value: ${default_value} # echo default_value: ${default_value}
read -p "Enter value for $key (default: ${prev_value_or_default}): " user_input if(${promptUser} == "true"); then
read -p " || Enter value for $key (default: ${prev_value_or_default}): " user_input
fi
# Use user input or default value if empty # Use user input or default value if empty
value=${user_input:-$prev_value_or_default} value=${user_input:-$prev_value_or_default}
@ -38,26 +41,26 @@ function acceptProperty(){
userValues="${userValues}${key}=${value}\n" userValues="${userValues}${key}=${value}\n"
} }
# Iterate over the properties array and prompt user for input # Iterate over the properties array and prompt user for input
echo basic_properties : "${basic_properties[@]}"
for multi_property_array in basic_properties invite_only_signup_priorities google_login_properties email_properties s3_attachment_properties ; do for multi_property_array in basic_properties invite_only_signup_priorities google_login_properties email_properties s3_attachment_properties ; do
array_name="$multi_property_array[@]" # Name of the array to process array_name="$multi_property_array[@]" # Name of the array to process
array=("${!array_name}") array=("${!array_name}")
# array=("${!multi_property_array}")
echo array : "${array[@]}"
for varDetail in "${array[@]}"; do for varDetail in "${array[@]}"; do
echo varDetail : ${varDetail} promptUser=true
prompt=$(echo "$varDetail" | cut -d '|' -f1) promptMsg=$(echo "$varDetail" | cut -d '|' -f1)
prop=$(echo "$varDetail" | cut -d '|' -f2) prop=$(echo "$varDetail" | cut -d '|' -f2)
if [[ ${prompt} == "main" ]] if [[ ${promptMsg} == "main" ]]
then then
echo $prop echo $prop
if asksure; then if asksure; then
continue continue
else else
# set all defaults here
promptUser=false
# acceptProperty "${varDetail}" "${promptUser}"
break break
fi fi
fi fi
acceptProperty "${varDetail}" acceptProperty "${varDetail}" "${promptUser}"
done done
done done

6
docker-compose/aio/sbin/install_vars.sh

@ -3,9 +3,9 @@ REQUIRED_PORTS=(80 443)
DOCKER_IMAGES=("redis:latest" "postgres:14.7" "nocodb/nocodb:latest" "nginx" "certbot/certbot:latest" ) DOCKER_IMAGES=("redis:latest" "postgres:14.7" "nocodb/nocodb:latest" "nginx" "certbot/certbot:latest" )
# Array of properties with default values # Array of properties with default values
basic_properties=("main|basic configurations, customise ?" "Username for postgres database|POSTGRES_USER=postgres" "|POSTGRES_PASSWORD=test123" "|POSTGRES_DB=nocodb" "|NC_REDIS_URL=redis://redis:6379/4" '|NC_DB=pg://postgres:5432?u=postgres&password=${POSTGRES_PASSWORD:-nocodb}&d=postgres' "Are you using custom DNS, configure NC_PUBLIC_URL to reflect in the invite emails?|NC_PUBLIC_URL=$(hostname)" "Disable connecting to external db?|NC_CONNECT_TO_EXTERNAL_DB_DISABLED=false") basic_properties=("main|Basic Configurations" "Username for postgres database|POSTGRES_USER=postgres" "|POSTGRES_PASSWORD=test123" "|POSTGRES_DB=nocodb" "|NC_REDIS_URL=redis://redis:6379/4" '|NC_DB=pg://postgres:5432?u=postgres&password=${POSTGRES_PASSWORD:-nocodb}&d=postgres' "Are you using custom DNS, configure NC_PUBLIC_URL to reflect in the invite emails?|NC_PUBLIC_URL=$(hostname)" "Disable connecting to external db?|NC_CONNECT_TO_EXTERNAL_DB_DISABLED=false")
invite_only_signup_priorities=("main|Allow invite only sign-up" "invite only signup?|NC_INVITE_ONLY_SIGNUP=false" "|NC_ADMIN_EMAIL=false" "|NC_ADMIN_PASSWORD=false") invite_only_signup_priorities=("main|Allow invite only sign-up" "invite only signup?|NC_INVITE_ONLY_SIGNUP=false" "|NC_ADMIN_EMAIL=admin@nocodb.com" "|NC_ADMIN_PASSWORD=nocodb123")
google_login_properties=("main|Configure google login" "Enter Client ID|NC_GOOGLE_CLIENT_ID=" "Enter Client ID|NC_GOOGLE_CLIENT_SECRET=") google_login_properties=("main|Configure Google Login" "Enter Client ID|NC_GOOGLE_CLIENT_ID=" "Enter Client ID|NC_GOOGLE_CLIENT_SECRET=")
email_properties=("main|Configure smtp properties" "|NC_SMTP_FROM=" "|NC_SMTP_HOST=" "|NC_SMTP_PORT=" "|NC_SMTP_USERNAME=" "|NC_SMTP_PASSWORD=" "|NC_SMTP_SECURE=" "|NC_SMTP_IGNORE_TLS=" ) email_properties=("main|Configure smtp properties" "|NC_SMTP_FROM=" "|NC_SMTP_HOST=" "|NC_SMTP_PORT=" "|NC_SMTP_USERNAME=" "|NC_SMTP_PASSWORD=" "|NC_SMTP_SECURE=" "|NC_SMTP_IGNORE_TLS=" )
s3_attachment_properties=("main|Do you want to configure s3 for attachements?" "|NC_S3_BUCKET_NAME=nocodb-attachements" "|NC_S3_REGION=" "|NC_S3_ACCESS_KEY=" "|NC_S3_ACCESS_SECRET=" ) s3_attachment_properties=("main|Do you want to configure s3 for attachements?" "|NC_S3_BUCKET_NAME=nocodb-attachements" "|NC_S3_REGION=" "|NC_S3_ACCESS_KEY=" "|NC_S3_ACCESS_SECRET=" )

2
docker-compose/aio/sbin/util.sh

@ -4,7 +4,7 @@
# #
asksure() { asksure() {
echo -n "Are you sure (Y/N)? " echo -n " | Press Y to continue or N to skip to next step (Y/N)? "
while read -r -n 1 -s answer; do while read -r -n 1 -s answer; do
if [[ $answer = [YyNn] ]]; then if [[ $answer = [YyNn] ]]; then
[[ $answer = [Yy] ]] && retval=0 [[ $answer = [Yy] ]] && retval=0

Loading…
Cancel
Save