Update to version 3.7.0 and refactor prompt handling functions
Updated _VERSION to 3.7.0 and replaced whiptail-based yes/no prompts with getInputYesNo function. Added VDM_FORCE flag for automated confirmations.
This commit is contained in:
parent
593ae84c89
commit
7837d8ecd4
219
src/octojoom
219
src/octojoom
@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# The most recent program version.
|
||||
_VERSION="3.6.4"
|
||||
_V="3.6"
|
||||
_VERSION="3.7.0"
|
||||
_V="3.7"
|
||||
|
||||
# Bash version required
|
||||
_bash_v=4
|
||||
@ -296,8 +296,8 @@ function traefik__TRuST__setup() {
|
||||
# saved the file
|
||||
showNotice "Saved ${VDM_CONTAINER_TYPE}:docker-compose.yml file.\nSetup of this container is complete!"
|
||||
# ask if we should continue to enable
|
||||
if (whiptail --yesno "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" --defaultno \
|
||||
--title "Enable Container" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
"Enable Container" 8 112 "defaultno"; then
|
||||
enableContainer "${VDM_CONTAINER_TYPE}"
|
||||
fi
|
||||
##########################
|
||||
@ -408,8 +408,8 @@ function portainer__TRuST__setup() {
|
||||
# saved the file
|
||||
showNotice "Saved ${VDM_CONTAINER_TYPE}:docker-compose.yml file.\nSetup of this container is complete!"
|
||||
# ask if we should continue to enable
|
||||
if (whiptail --yesno "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
--defaultno --title "Enable Container" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
"Enable Container" 8 112 "defaultno"; then
|
||||
enableContainer "${VDM_CONTAINER_TYPE}"
|
||||
fi
|
||||
##########################
|
||||
@ -606,8 +606,8 @@ function joomla__TRuST__setup() {
|
||||
# only if in expert mode set the container user detail id needed
|
||||
if isExpert; then
|
||||
# ask if we should add mailcatcher
|
||||
if (whiptail --yesno "Would you also like to enable mailcatcher for these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
--defaultno --title "Enable Mailcatcher" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable mailcatcher for these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
"Enable Mailcatcher" 8 112 "defaultno"; then
|
||||
VDM_EXTRA_CONTAINER_STUFF=$(getYMLine1 "mailcatcher${VDM_KEY}:")
|
||||
VDM_EXTRA_CONTAINER_STUFF+=$(getYMLine2 "image: schickling/mailcatcher")
|
||||
VDM_EXTRA_CONTAINER_STUFF+=$(getYMLine2 "container_name: mailcatcher${VDM_KEY}")
|
||||
@ -723,8 +723,8 @@ function joomla__TRuST__setup() {
|
||||
# saved the file
|
||||
showNotice "Saved ${VDM_CONTAINER_TYPE}:docker-compose.yml file.\nSetup of this container is complete!"
|
||||
# ask if we should continue to enable
|
||||
if (whiptail --yesno "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
--defaultno --title "Enable Container" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
"Enable Container" 8 112 "defaultno"; then
|
||||
# we set the container details
|
||||
export VDM_CONTAINER="${VDM_SUBDOMAIN}.${VDM_DOMAIN}"
|
||||
# then we enable it
|
||||
@ -936,8 +936,8 @@ function joomla__TRuST__bulk() {
|
||||
fi
|
||||
# ask if we should add mailcatcher
|
||||
enable_mailcatcher=false
|
||||
if (whiptail --yesno "Would you also like to enable mailcatcher for these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
--defaultno --title "Enable Mailcatcher" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable mailcatcher for these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
"Enable Mailcatcher" 8 112 "defaultno"; then
|
||||
enable_mailcatcher=true
|
||||
fi
|
||||
# we only do autodeploy for Joomla 4.3 and above
|
||||
@ -971,8 +971,8 @@ function joomla__TRuST__bulk() {
|
||||
setNumberContainers
|
||||
# ask if we should continue to enable
|
||||
enable_containers=false
|
||||
if (whiptail --yesno "Would you also like to enable all these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
--defaultno --title "Enable Containers" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable all these ${VDM_CONTAINER_TYPE^} containers" \
|
||||
"Enable Containers" 8 112 "defaultno"; then
|
||||
enable_containers=true
|
||||
fi
|
||||
# loop the number of containers
|
||||
@ -1206,18 +1206,18 @@ function openssh__TRuST__setup() {
|
||||
# get the global directory of the ssh public keys if not set
|
||||
while [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -le 1 ] || [ ! -d "${VDM_PUBLIC_KEY_GLOBAL_DIR}" ]; do
|
||||
# creat the path if it exist
|
||||
if [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -ge 1 ] &&
|
||||
(whiptail --yesno "Can we create the ${VDM_PUBLIC_KEY_GLOBAL_DIR} ssh folder" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -ge 1 ] && \
|
||||
getInputYesNo "Can we create the ${VDM_PUBLIC_KEY_GLOBAL_DIR} ssh folder" \
|
||||
"Create the Path" 8 112; then
|
||||
mkdir -p "${VDM_PUBLIC_KEY_GLOBAL_DIR}"
|
||||
else
|
||||
# get the value
|
||||
VDM_PUBLIC_KEY_GLOBAL_DIR=$(getInput "Enter the ssh path where we can select the ssh key folders from." \
|
||||
"${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/.ssh" 'Enter SSH Path')
|
||||
# keep asking if empty or does exist
|
||||
if [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -ge 1 ] && [ ! -d "${VDM_PUBLIC_KEY_GLOBAL_DIR}" ] &&
|
||||
(whiptail --yesno "Can we create the ${VDM_PUBLIC_KEY_GLOBAL_DIR} ssh folder" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -ge 1 ] && [ ! -d "${VDM_PUBLIC_KEY_GLOBAL_DIR}" ] && \
|
||||
getInputYesNo "Can we create the ${VDM_PUBLIC_KEY_GLOBAL_DIR} ssh folder" \
|
||||
"Create the Path" 8 112; then
|
||||
# shellcheck disable=SC2174
|
||||
mkdir -p -m 700 "${VDM_PUBLIC_KEY_GLOBAL_DIR}"
|
||||
elif [ ${#VDM_PUBLIC_KEY_GLOBAL_DIR} -le 1 ]; then
|
||||
@ -1231,9 +1231,9 @@ function openssh__TRuST__setup() {
|
||||
# get the directory of this containers public keys if not set
|
||||
while [ ${#VDM_PUBLIC_KEY_U_DIR} -le 1 ] || [ ! -d "${VDM_PUBLIC_KEY_U_DIR}" ]; do
|
||||
# creat the path if it exist
|
||||
if [ ${#VDM_PUBLIC_KEY_U_DIR} -ge 1 ] &&
|
||||
(whiptail --yesno "Can we create this (${VDM_PUBLIC_KEY_U_DIR}) containers' ssh public keys folder" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ${#VDM_PUBLIC_KEY_U_DIR} -ge 1 ] && \
|
||||
getInputYesNo "Can we create this (${VDM_PUBLIC_KEY_U_DIR}) containers' ssh public keys folder" \
|
||||
"Create the Path" 8 112; then
|
||||
# shellcheck disable=SC2174
|
||||
mkdir -p -m 700 "${VDM_PUBLIC_KEY_U_DIR}"
|
||||
else
|
||||
@ -1245,9 +1245,9 @@ function openssh__TRuST__setup() {
|
||||
# add the parent dir back
|
||||
VDM_PUBLIC_KEY_U_DIR="${VDM_PUBLIC_KEY_GLOBAL_DIR}/${VDM_PUBLIC_KEY_U_DIR}"
|
||||
# check if this directory exist
|
||||
if [ ! -d "${VDM_PUBLIC_KEY_U_DIR}" ] &&
|
||||
(whiptail --yesno "Can we create this (${VDM_PUBLIC_KEY_U_DIR}) containers' ssh public keys folder" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ! -d "${VDM_PUBLIC_KEY_U_DIR}" ] && \
|
||||
getInputYesNo "Can we create this (${VDM_PUBLIC_KEY_U_DIR}) containers' ssh public keys folder" \
|
||||
"Create the Path" 8 112; then
|
||||
# shellcheck disable=SC2174
|
||||
mkdir -p -m 700 "${VDM_PUBLIC_KEY_U_DIR}"
|
||||
# TODO add option to add keys?
|
||||
@ -1263,18 +1263,18 @@ function openssh__TRuST__setup() {
|
||||
# get the directory of the ssh public keys if not set
|
||||
while [ ${#VDM_PROJECT_U_DIR} -le 1 ] || [ ! -d "${VDM_PROJECT_U_DIR}" ]; do
|
||||
# creat the path if it exist
|
||||
if [ ${#VDM_PROJECT_U_DIR} -ge 1 ] &&
|
||||
(whiptail --yesno "Can we create the ${VDM_PROJECT_U_DIR} parent mounting directory" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ${#VDM_PROJECT_U_DIR} -ge 1 ] && \
|
||||
getInputYesNo "Can we create the ${VDM_PROJECT_U_DIR} parent mounting directory" \
|
||||
"Create the Path" 8 112; then
|
||||
mkdir -p "${VDM_PROJECT_U_DIR}"
|
||||
else
|
||||
# get the value
|
||||
VDM_PROJECT_U_DIR=$(getInput "Enter the parent path where we can select the folders to mount to this container." \
|
||||
"${VDM_PROJECT_PATH}" 'Enter Path')
|
||||
# keep asking if empty or does exist
|
||||
if [ ${#VDM_PROJECT_U_DIR} -ge 1 ] && [ ! -d "${VDM_PROJECT_U_DIR}" ] &&
|
||||
(whiptail --yesno "Can we create the ${VDM_PROJECT_U_DIR} parent mounting directory" \
|
||||
--title "Create the Path" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ ${#VDM_PROJECT_U_DIR} -ge 1 ] && [ ! -d "${VDM_PROJECT_U_DIR}" ] && \
|
||||
getInputYesNo "Can we create the ${VDM_PROJECT_U_DIR} parent mounting directory" \
|
||||
"Create the Path" 8 112; then
|
||||
# shellcheck disable=SC2174
|
||||
mkdir -p -m 700 "${VDM_PROJECT_U_DIR}"
|
||||
elif [ ${#VDM_PROJECT_U_DIR} -le 1 ]; then
|
||||
@ -1303,8 +1303,9 @@ function openssh__TRuST__setup() {
|
||||
# when we mount a joomla volume we may not want to mount the database
|
||||
mFull="${VDM_PROJECT_U_DIR}/${mDir}/joomla"
|
||||
# add to mount projects
|
||||
if [ -d "${mFull}" ] && (whiptail --yesno "Should we ONLY mount the (joomla website files) ${mDir}/joomla directory" \
|
||||
--title "Mount Joomla" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ -d "${mFull}" ] && \
|
||||
getInputYesNo "Should we ONLY mount the (joomla website files) ${mDir}/joomla directory" \
|
||||
"Mount Joomla" 8 112; then
|
||||
VDM_VOLUMES_MOUNT+=$(getYMLine3 "- \${VDM_${VDM_ENV_KEY^^}_PROJECT_DIR}/${mDir}/joomla:/app/${mDir}")
|
||||
else
|
||||
VDM_VOLUMES_MOUNT+=$(getYMLine3 "- \${VDM_${VDM_ENV_KEY^^}_PROJECT_DIR}/${mDir}:/app/${mDir}")
|
||||
@ -1339,8 +1340,8 @@ function openssh__TRuST__setup() {
|
||||
# saved the file
|
||||
showNotice "Saved ${VDM_CONTAINER_TYPE}:docker-compose.yml file.\nSetup of this container is complete!"
|
||||
# ask if we should continue to enable
|
||||
if (whiptail --yesno "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
--defaultno --title "Enable Container" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you also like to enable this ${VDM_CONTAINER_TYPE^} container" \
|
||||
"Enable Container" 8 112 "defaultno"; then
|
||||
# we set the container details
|
||||
export VDM_CONTAINER="${VDM_USER_NAME}.${VDM_DOMAIN}"
|
||||
# then we enable it
|
||||
@ -1954,8 +1955,8 @@ function joomla__TRuST__down() {
|
||||
if ! hasDirectories "${VDM_CONTAINER_TYPE}/enabled/"; then
|
||||
showError "There are no ${VDM_CONTAINER_TYPE^} containers to take down.\n\
|
||||
(UP and DOWN targets only enabled containers)"
|
||||
elif (whiptail --yesno "Are you absolutely sure you want to take down all the ${VDM_CONTAINER_TYPE^} containers?" \
|
||||
--title "Take Down Containers" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
elif getInputYesNo "Are you absolutely sure you want to take down all the ${VDM_CONTAINER_TYPE^} containers?" \
|
||||
"Take Down Containers" 8 112; then
|
||||
# get all zip files
|
||||
for yml in "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/enabled/"*/*.yml; do
|
||||
docker-compose --file "${yml}" down
|
||||
@ -1969,8 +1970,8 @@ function openssh__TRuST__down() {
|
||||
# check if this type has enabled containers
|
||||
if ! hasDirectories "${VDM_CONTAINER_TYPE}/enabled/"; then
|
||||
showError "There are no ${VDM_CONTAINER_TYPE^} containers to take down."
|
||||
elif (whiptail --yesno "Are you absolutely sure you want to take down all the ${VDM_CONTAINER_TYPE^} containers?" \
|
||||
--title "Take Down Containers" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
elif getInputYesNo "Are you absolutely sure you want to take down all the ${VDM_CONTAINER_TYPE^} containers?" \
|
||||
"Take Down Containers" 8 112; then
|
||||
# get all zip files
|
||||
for yml in "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/enabled/"*/*.yml; do
|
||||
docker-compose --file "${yml}" down
|
||||
@ -1986,14 +1987,14 @@ function joomla__TRuST__clone() {
|
||||
showError "The path ${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/ does not exist or is empty, first run a ${VDM_CONTAINER_TYPE^} setup."
|
||||
else
|
||||
# ask if they want to clone a volume
|
||||
if (whiptail --yesno "Would you like to clone a persistent volume found in (${VDM_PROJECT_PATH})?" \
|
||||
--title "Continue To Clone Persistent Volume" --backtitle "${BACK_TITLE}" 12 112); then
|
||||
if getInputYesNo "Would you like to clone a persistent volume found in (${VDM_PROJECT_PATH})?" \
|
||||
"Continue To Clone Persistent Volume" 12 112; then
|
||||
# trigger the volumes clone script
|
||||
clonePersistentVolume
|
||||
fi
|
||||
# ask if they want to clone a container
|
||||
if (whiptail --yesno "Would you like to clone a ${VDM_CONTAINER_TYPE^} container?" \
|
||||
--title "Continue To Clone Container (feature not ready)" --defaultno --backtitle "${BACK_TITLE}" 12 112); then
|
||||
if getInputYesNo "Would you like to clone a ${VDM_CONTAINER_TYPE^} container?" \
|
||||
"Continue To Clone Container (feature not ready)" 12 112 "defaultno"; then
|
||||
# set some local variables
|
||||
local vdm_clone_me
|
||||
local container
|
||||
@ -2045,17 +2046,17 @@ function joomla__TRuST__delete() {
|
||||
rm -rf "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/enabled/${container}"
|
||||
fi
|
||||
# before deleting the config we ask to make sure
|
||||
if (whiptail --yesno "Would you like to delete the (${container}) container's folder that holds the docker-compose.yml file?" \
|
||||
--title "Delete Docker Compose Yaml" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to delete the (${container}) container's folder that holds the docker-compose.yml file?" \
|
||||
"Delete Docker Compose Yaml" 8 112; then
|
||||
# then remove docker-compose.yml file
|
||||
rm -rf "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/${container}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# ask if there are volumes to delete
|
||||
if hasDirectories '' "${VDM_PROJECT_PATH}" &&
|
||||
(whiptail --yesno "Would you like to delete persistent volumes found in (${VDM_PROJECT_PATH})?" \
|
||||
--title "Continue To Delete Persistent Volumes" --backtitle "${BACK_TITLE}" 12 112); then
|
||||
if hasDirectories '' "${VDM_PROJECT_PATH}" && \
|
||||
getInputYesNo "Would you like to delete persistent volumes found in (${VDM_PROJECT_PATH})?" \
|
||||
"Continue To Delete Persistent Volumes" 12 112; then
|
||||
# trigger the volumes removal script
|
||||
deletePersistentVolumes
|
||||
fi
|
||||
@ -2093,8 +2094,8 @@ function openssh__TRuST__delete() {
|
||||
rm -fr "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/enabled/${container}"
|
||||
fi
|
||||
# before deleting the config we ask to make sure
|
||||
if (whiptail --yesno "Would you like to delete the (${container}) container's folder that holds the docker-compose.yml file?" \
|
||||
--title "Delete Docker Compose Yaml" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to delete the (${container}) container's folder that holds the docker-compose.yml file?" \
|
||||
"Delete Docker Compose Yaml" 8 112; then
|
||||
# then remove docker-compose.yml file
|
||||
rm -fr "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/available/${container}"
|
||||
fi
|
||||
@ -2113,8 +2114,8 @@ function traefik__TRuST__delete() {
|
||||
# make sure the docker image is stopped
|
||||
docker-compose --file "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml" down
|
||||
# before deleting the config we ask to make sure
|
||||
if (whiptail --yesno "Would you like to delete the ${VDM_CONTAINER_TYPE^} container's docker-compose.yml file?" \
|
||||
--title "Delete Docker Compose Yaml" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to delete the ${VDM_CONTAINER_TYPE^} container's docker-compose.yml file?" \
|
||||
"Delete Docker Compose Yaml" 8 112; then
|
||||
# then remove docker-compose.yml file
|
||||
rm -fr "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
|
||||
fi
|
||||
@ -2131,8 +2132,8 @@ function portainer__TRuST__delete() {
|
||||
# make sure the docker image is stopped
|
||||
docker-compose --file "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml" down
|
||||
# before deleting the config we ask to make sure
|
||||
if (whiptail --yesno "Would you like to delete the ${VDM_CONTAINER_TYPE^} container's docker-compose.yml file?" \
|
||||
--title "Delete Docker Compose Yaml" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to delete the ${VDM_CONTAINER_TYPE^} container's docker-compose.yml file?" \
|
||||
"Delete Docker Compose Yaml" 8 112; then
|
||||
# then remove docker-compose.yml file
|
||||
rm -fr "${VDM_REPO_PATH}/${VDM_CONTAINER_TYPE}/docker-compose.yml"
|
||||
fi
|
||||
@ -2143,9 +2144,9 @@ function portainer__TRuST__delete() {
|
||||
######################################## RESET JOOMLA
|
||||
function joomla__TRuST__reset() {
|
||||
# ask if there are volumes to delete
|
||||
if hasDirectories '' "${VDM_PROJECT_PATH}" &&
|
||||
(whiptail --yesno "Would you like to reset persistent volumes found in (${VDM_PROJECT_PATH})?" \
|
||||
--title "Continue To Reset Persistent Volumes" --backtitle "${BACK_TITLE}" 12 112); then
|
||||
if hasDirectories '' "${VDM_PROJECT_PATH}" && \
|
||||
getInputYesNo "Would you like to reset persistent volumes found in (${VDM_PROJECT_PATH})?" \
|
||||
"Continue To Reset Persistent Volumes" 12 112; then
|
||||
# trigger the volumes reset script
|
||||
resetPersistentJoomlaVolumes
|
||||
fi
|
||||
@ -2643,8 +2644,8 @@ function resetPersistentJoomlaVolumes() {
|
||||
# make an update
|
||||
function runUpdate() {
|
||||
# we need sudo permissions
|
||||
if (whiptail --yesno "${USER^}, to update ${PROGRAM_NAME} we need sudo privileges." \
|
||||
--title "Give sudo Privileges" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "${USER^}, to update ${PROGRAM_NAME} we need sudo privileges." \
|
||||
"Give sudo Privileges" 8 112; then
|
||||
# remove the current version
|
||||
if [ -f /usr/local/bin/octojoom ]; then
|
||||
# just backup in case of failure
|
||||
@ -3608,6 +3609,42 @@ function getInput() {
|
||||
echo "${answer}"
|
||||
}
|
||||
|
||||
# Display a yes/no prompt using the whiptail utility.
|
||||
# If "defaultno" is passed as the fifth parameter, it defaults to "No" when VDM_FORCE is set to "true".
|
||||
# $1: Prompt message
|
||||
# $2 (optional): Title for the dialog (default: "Confirmation Required")
|
||||
# $3 (optional): Height of the dialog (default: 8)
|
||||
# $4 (optional): Width of the dialog (default: 50)
|
||||
# $5 (optional): Set to "defaultno" to make "No" the default choice.
|
||||
# Returns 0 (yes) if the user selects "Yes".
|
||||
# Returns 1 (no) if the user selects "No" or if "defaultno" is set and VDM_FORCE is "true".
|
||||
function getInputYesNo() {
|
||||
# set local vars
|
||||
local question="$1"
|
||||
local title="${2:-Confirmation Required}"
|
||||
local height="${3:-8}"
|
||||
local width="${4:-50}"
|
||||
local defaultno="${5:-}"
|
||||
|
||||
# Handle VDM_FORCE behavior based on the 'defaultno' parameter
|
||||
if [ "$VDM_FORCE" = "true" ]; then
|
||||
if [ "$defaultno" = "defaultno" ]; then
|
||||
return 1 # Default to No if "defaultno" is set and VDM_FORCE is true
|
||||
else
|
||||
return 0 # Default to Yes if "defaultno" is not set and VDM_FORCE is true
|
||||
fi
|
||||
else
|
||||
# Display the whiptail prompt with the provided parameters
|
||||
if [ "$defaultno" = "defaultno" ]; then
|
||||
whiptail --defaultno --yesno "$question" "$height" "$width" --title "$title" \
|
||||
--backtitle "${BACK_TITLE}" 3>&1 1>&2 2>&3
|
||||
else
|
||||
whiptail --yesno "$question" "$height" "$width" --title "$title" \
|
||||
--backtitle "${BACK_TITLE}" 3>&1 1>&2 2>&3
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# get the input until is gotten
|
||||
function getInputNow() {
|
||||
local message
|
||||
@ -3930,9 +3967,9 @@ function getMainDomain() {
|
||||
# set the container user
|
||||
function setContainerUser() {
|
||||
# ask if a new User ID should be set if one is set
|
||||
if [ -n "${VDM_PUID}" ] && [[ "${VDM_PUID}" =~ ^[0-9]+$ ]] &&
|
||||
(whiptail --yesno "The user ID in ${PROGRAM_NAME} memory is ${VDM_PUID}, would you like to change this user ID?" \
|
||||
--defaultno --title "Set User ID" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if [ -n "${VDM_PUID}" ] && [[ "${VDM_PUID}" =~ ^[0-9]+$ ]] && \
|
||||
getInputYesNo "The user ID in ${PROGRAM_NAME} memory is ${VDM_PUID}, would you like to change this user ID?" \
|
||||
"Set User ID" 8 112 "defaultno"; then
|
||||
# always first reset
|
||||
unset VDM_PUID
|
||||
fi
|
||||
@ -3947,10 +3984,11 @@ function setContainerUser() {
|
||||
showError "You must enter a user ID like: ${1:-1000} (only the number)"
|
||||
fi
|
||||
done
|
||||
|
||||
# ask if a new Group ID should be set if one is set
|
||||
if [ -n "${VDM_PGID}" ] && [[ "${VDM_PGID}" =~ ^[0-9]+$ ]] &&
|
||||
(whiptail --yesno "The user-group ID in ${PROGRAM_NAME} memory is ${VDM_PGID}, would you like to change this user-group ID?" \
|
||||
--defaultno --title "Set User-Group ID" --backtitle "${BACK_TITLE}"8 112); then
|
||||
if [ -n "${VDM_PGID}" ] && [[ "${VDM_PGID}" =~ ^[0-9]+$ ]] && \
|
||||
getInputYesNo "The user-group ID in ${PROGRAM_NAME} memory is ${VDM_PGID}, would you like to change this user-group ID?" \
|
||||
"Set User-Group ID" 8 112 "defaultno"; then
|
||||
# always first reset
|
||||
unset VDM_PGID
|
||||
fi
|
||||
@ -4120,8 +4158,8 @@ function setUniqueKey() {
|
||||
# set the Joomla website details
|
||||
function setJoomlaWebsiteDetails() {
|
||||
# ask if we should add auto deployment
|
||||
if (whiptail --yesno "Would you like to enable website autodeploy for ${VDM_CONTAINER_TYPE,}:${VDM_JV}" \
|
||||
--defaultno --title "Enable Autodeploy" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to enable website auto deploy for ${VDM_CONTAINER_TYPE,}:${VDM_JV}" \
|
||||
"Enable Auto deploy" 8 112; then
|
||||
|
||||
# ask for website name
|
||||
setJoomlaSiteName
|
||||
@ -4391,8 +4429,8 @@ function isVersionAbove() {
|
||||
# set persistence volumes
|
||||
function setPersistence() {
|
||||
# ask the question
|
||||
if (whiptail --yesno "Would you like to enable persistence on this $1." \
|
||||
--title "Persist Volume" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to enable persistence on this $1." \
|
||||
"Persist Volume" 8 112; then
|
||||
# yes persistence
|
||||
return 0
|
||||
fi
|
||||
@ -4403,8 +4441,8 @@ function setPersistence() {
|
||||
# set the PHP settings
|
||||
function setPHPSettings() {
|
||||
# ask the question
|
||||
if (whiptail --yesno "Would you like to set some PHP overrides for the Joomla container.\n\nTo make these changes we need sudo privileges." \
|
||||
--defaultno --title "PHP.ini values" --backtitle "${BACK_TITLE}" 9 112); then
|
||||
if getInputYesNo "Would you like to set some PHP overrides for the Joomla container.\n\nTo make these changes we need sudo privileges." \
|
||||
"PHP.ini values" 9 112; then
|
||||
|
||||
# max_execution_time
|
||||
VDM_max_execution_time=$(getInputNow "Enter max execution time" \
|
||||
@ -4464,8 +4502,8 @@ function setPHPSettings() {
|
||||
} > "${VDM_PROJECT_PATH}/${VDM_PHP_PROJECT_PATH}/php.ini"
|
||||
|
||||
# allow custom edit
|
||||
if isExpert && (whiptail --yesno "Would you like to set some more custom PHP overrides for this Joomla container" \
|
||||
--defaultno --title "Edit PHP.ini" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if isExpert && getInputYesNo "Would you like to set some more custom PHP overrides for this Joomla container" \
|
||||
"Edit PHP.ini" 8 112 "defaultno"; then
|
||||
# give little heads-up
|
||||
showNotice "${USER^}, to save the changes you've made or to just close the file again press:\n\n[ctrl+x] with nano on ubuntu." 13
|
||||
# lets open the file with nano for now
|
||||
@ -4490,8 +4528,8 @@ function setPHPSettings() {
|
||||
# set the docker entrypoint
|
||||
function setDockerEntrypoint() {
|
||||
# ask the question
|
||||
if (whiptail --yesno "Would you like to customize the entrypoint script for this Joomla container" \
|
||||
--defaultno --title "entrypoint.sh values" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to customize the entrypoint script for this Joomla container" \
|
||||
"entrypoint.sh values" 8 112 "defaultno"; then
|
||||
# make sure the directory exist
|
||||
mkdir -p "${VDM_PROJECT_PATH}/${VDM_ENTRY_PROJECT_PATH}"
|
||||
# unattended deploy
|
||||
@ -4523,8 +4561,8 @@ function setDockerEntrypoint() {
|
||||
# set the secure state
|
||||
function setSecureCloudflareState() {
|
||||
# check the security switch
|
||||
if (whiptail --yesno "Will this container be proxied by Cloudflare [ONLY for server proxied in none-strict mode via Cloudflare]" \
|
||||
--defaultno --title "Cloudflare" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Will this container be proxied by Cloudflare [ONLY for server proxied in none-strict mode via Cloudflare]" \
|
||||
"Cloudflare" 8 112 "defaultno"; then
|
||||
# we set the secure switch
|
||||
VDM_SECURE_CLOUDFLARE=true
|
||||
else
|
||||
@ -4538,8 +4576,8 @@ function setSecureCloudflareState() {
|
||||
function setSecureState() {
|
||||
if [ "${VDM_SECURE:-not}" = 'not' ]; then
|
||||
# check the security switch
|
||||
if (whiptail --yesno "Would you like to use Letsencrypt auto setup for your containers [ONLY for server with public static IP]" \
|
||||
--defaultno --title "Letsencrypt" --backtitle "${BACK_TITLE}" 8 112); then
|
||||
if getInputYesNo "Would you like to use Letsencrypt auto setup for your containers [ONLY for server with public static IP]" \
|
||||
"Letsencrypt" 8 112 "defaultno"; then
|
||||
# we set the secure switch
|
||||
VDM_SECURE=true
|
||||
else
|
||||
@ -5053,11 +5091,13 @@ function pushContainerMigration() {
|
||||
remote_repo_path=$(getRemoteEnvValue "${remote}" "VDM_REPO_PATH")
|
||||
if [ ! "${remote_repo_path}" = 'none_found' ]; then
|
||||
local remote_path="${remote_repo_path}/${container_path}"
|
||||
# check how we must do this
|
||||
# check if we must backup remote folder
|
||||
if remoteFolderExists "${remote_path}" "${remote}" && (whiptail --yesno "${USER^}, would you like to backup the remote container?" \
|
||||
--backtitle "${BACK_TITLE}" --title "Backup Remote" 15 112); then
|
||||
backupRemoteFolder "${remote_path}" "${remote}"
|
||||
fi
|
||||
# if folder still exist remove remote folder
|
||||
removeRemoteFolder "${remote_path}" "${remote}"
|
||||
# sync folder
|
||||
syncWithRemote "${local_path}" "${remote_path}" "${remote}"
|
||||
# check if it was done successfully
|
||||
@ -5124,6 +5164,8 @@ function pushDirectoryMigration() {
|
||||
then
|
||||
backupRemoteFolder "${remote_path}" "${remote}"
|
||||
fi
|
||||
# if folder still exist remove remote folder
|
||||
removeRemoteFolder "${remote_path}" "${remote}"
|
||||
# un-tar the remote file
|
||||
remoteUntarGz "${remote_path}.tar.gz" "${remote_path}" "${remote}"
|
||||
# we are done
|
||||
@ -5253,6 +5295,17 @@ function backupRemoteFolder() {
|
||||
ssh "${remote}" "if [ -d '${remote_path}' ]; then mv '${remote_path}' '${backup_name}'; fi"
|
||||
}
|
||||
|
||||
# remove the remote folder
|
||||
function removeRemoteFolder() {
|
||||
local remote_path="$1"
|
||||
local remote="$2"
|
||||
# always confirm that the path exist
|
||||
if remoteFolderExists "${remote_path}" "${remote}"; then
|
||||
# shellcheck disable=SC2029
|
||||
ssh "${remote}" "if [ -d '${remote_path}' ]; then sudo rm -Irf '${remote_path}'; fi"
|
||||
fi
|
||||
}
|
||||
|
||||
# Prep remote folder
|
||||
function prepRemoteFolder() {
|
||||
local remote_path="$1"
|
||||
@ -5481,6 +5534,7 @@ EOF
|
||||
|
||||
# defaults
|
||||
VDM_ARG_DOMAIN=false
|
||||
VDM_FORCE=false
|
||||
|
||||
# check if we have options
|
||||
while :; do
|
||||
@ -5493,6 +5547,9 @@ while :; do
|
||||
runUpdate
|
||||
shift
|
||||
;;
|
||||
-y | --yes)
|
||||
VDM_FORCE=true
|
||||
;;
|
||||
--access-token) # Takes an option argument; ensure it has been specified.
|
||||
if [ "$2" ]; then
|
||||
VDM_ACCESS_TOKEN=$2
|
||||
|
Loading…
Reference in New Issue
Block a user