1
0
mirror of https://github.com/oupala/apaxy.git synced 2025-08-11 21:04:28 +02:00

fix: improve cli parameters management

Parameters can now be set in a config file or on the cli.

This change was made mandatory as bash cannot make a difference between a null and an undefined value.
This commit is contained in:
oupala
2019-06-03 15:53:16 +02:00
parent 6ccfb40ce2
commit 8ca6129404
2 changed files with 96 additions and 34 deletions

View File

@@ -16,15 +16,17 @@ set -eo pipefail
IFS=$'\n\t' IFS=$'\n\t'
# default config # default config
defaultLogLevel=2 defaultConfigFile="apaxy.config"
defaultLogFile="$(basename "${0}" .sh).log"
defaultApacheWebRootPath="/var/www/html" defaultApacheWebRootPath="/var/www/html"
defaultInstallWebPath="" defaultInstallWebPath=""
defaultEnableGallery=false defaultEnableGallery=false
defaultHeaderMessage="default header message" defaultHeaderMessage=""
defaultFooterMessage="default footer message" defaultFooterMessage=""
defaultLogLevel=2
defaultLogFile="$(basename "${0}" .sh).log"
workingDirectory="$(dirname "${0}")" workingDirectory="$(dirname "${0}")"
logLevel="${defaultLogLevel}"
# functions # functions
@@ -43,6 +45,7 @@ EOF
Available optionnal parameters are : Available optionnal parameters are :
-h - display help -h - display help
-c - set path/to/apaxy.config file that contains all configuration
-d - set path/to/dir/ directory where apaxy will be installed on the filesystem -d - set path/to/dir/ directory where apaxy will be installed on the filesystem
-w - set path/to/dir/ directory where apaxy will be available on the httpd server -w - set path/to/dir/ directory where apaxy will be available on the httpd server
-g - enable or disable gallery feature -g - enable or disable gallery feature
@@ -58,7 +61,7 @@ EOF
## ##
displayUsage () { displayUsage () {
cat <<EOF cat <<EOF
usage - $(basename "${0}") [-h] [-d path/to/dir/] [-w path/to/dir/] [-g true|false] [-hm "header message"] [-fm "footer message"] [-ll logLevel] [-lf logFile] usage - $(basename "${0}") [-h] [-c path/to/apaxy.config] [-d path/to/dir/] [-w path/to/dir/] [-g true|false] [-hm "header message"] [-fm "footer message"] [-ll logLevel] [-lf logFile]
EOF EOF
} }
@@ -89,15 +92,6 @@ log () {
fi fi
} }
# getting parameters value from config file (can be overloaded by cli values)
if [ -f "${workingDirectory}/apaxy.config" ]; then
# shellcheck source=apaxy.config
source "${workingDirectory}/apaxy.config"
else
log 1 "ERROR - apaxy configuration not found, please restore or create the configuration file apaxy.config"
exit 1
fi
# getting parameters value from cli (can overload config file values) # getting parameters value from cli (can overload config file values)
while [ "$#" -ge 1 ] ; do while [ "$#" -ge 1 ] ; do
case "${1}" in case "${1}" in
@@ -105,33 +99,37 @@ while [ "$#" -ge 1 ] ; do
displayHelp displayHelp
exit 0 exit 0
;; ;;
-c) # set path/to/apaxy.config file that contains all configuration
shiftStep=2
paramConfigFile="${2}"
;;
-d) # set path/to/dir/ directory where apaxy will be available on the httpd server -d) # set path/to/dir/ directory where apaxy will be available on the httpd server
shiftStep=2 shiftStep=2
apacheWebRootPath="${2}" paramApacheWebRootPath="${2}"
;; ;;
-w) # set path/to/dir/ directory where apaxy will be installed on the filesystem -w) # set path/to/dir/ directory where apaxy will be installed on the filesystem
shiftStep=2 shiftStep=2
installWebPath="${2}" paramInstallWebPath="${2}"
;; ;;
-g) # enable or disable gallery feature -g) # enable or disable gallery feature
shiftStep=2 shiftStep=2
enableGallery="${2}" paramEnableGallery="${2}"
;; ;;
-hm) # set the default header message displayed on top of each page -hm) # set the default header message displayed on top of each page
shiftStep=2 shiftStep=2
headerMessage="${2}" paramHeaderMessage="${2}"
;; ;;
-fm) # set the default footer message displayed on bottom of each page -fm) # set the default footer message displayed on bottom of each page
shiftStep=2 shiftStep=2
footerMessage="${2}" paramFooterMessage="${2}"
;; ;;
-ll) # set the log level -ll) # set the log level
shiftStep=2 shiftStep=2
logLevel="${2}" paramLogLevel="${2}"
;; ;;
-lf) # set the log file -lf) # set the log file
shiftStep=2 shiftStep=2
logFile="${2}" paramLogFile="${2}"
;; ;;
*) *)
displayUsage displayUsage
@@ -149,44 +147,93 @@ while [ "$#" -ge 1 ] ; do
done done
# setting parameters value # setting parameters value
if [ -z "${apacheWebRootPath}" ] if [ -r "${paramConfigFile}" ]
then
# getting parameters value from config file (config file name set by cli values)
configFile="${paramConfigFile}"
# shellcheck source=apaxy.config
source "${configFile}"
elif [ -r "${workingDirectory}/${defaultConfigFile}" ]
then
# getting parameters value from config file (config file name is default)
configFile="${workingDirectory}/${defaultConfigFile}"
# shellcheck source=apaxy.config
source "${configFile}"
else
log 1 "apaxy configuration not found, using internal config from script shell itself"
configFile=null
fi
if [ -n "${paramApacheWebRootPath}" ]
then
apacheWebRootPath="${paramApacheWebRootPath}"
elif [ -z "${apacheWebRootPath}" ]
then then
apacheWebRootPath="${defaultApacheWebRootPath}" apacheWebRootPath="${defaultApacheWebRootPath}"
fi fi
if [ -z "${installWebPath}" ] if [ -n "${paramInstallWebPath}" ]
then
installWebPath="${paramInstallWebPath}"
elif [ -z "${installWebPath}" ]
then then
installWebPath="${defaultInstallWebPath}" installWebPath="${defaultInstallWebPath}"
fi fi
if [ -n "${apacheWebRootPath}" ] && [ -z "${installWebPath}" ] if [ -n "${paramApacheWebRootPath}" ]
then then
installDir="${apacheWebRootPath}" apacheWebRootPath="${paramApacheWebRootPath}"
else elif [ -z "${apacheWebRootPath}" ]
installDir="${apacheWebRootPath}${installWebPath}" then
apacheWebRootPath="${defaultApacheWebRootPath}"
fi fi
if [ -z "${enableGallery}" ] if [ -n "${paramInstallWebPath}" ]
then
installWebPath="${paramInstallWebPath}"
elif [ -z "${installWebPath}" ]
then
installWebPath="${defaultInstallWebPath}"
fi
installDir="${apacheWebRootPath}${installWebPath}"
if [ -n "${paramEnableGallery}" ]
then
enableGallery="${paramEnableGallery}"
elif [ -z "${enableGallery}" ]
then then
enableGallery="${defaultEnableGallery}" enableGallery="${defaultEnableGallery}"
fi fi
if [ -z "${headerMessage}" ] if [ -n "${paramHeaderMessage}" ]
then
headerMessage="${paramHeaderMessage}"
elif [ -z "${headerMessage}" ]
then then
headerMessage="${defaultHeaderMessage}" headerMessage="${defaultHeaderMessage}"
fi fi
if [ -z "${footerMessage}" ] if [ -n "${paramFooterMessage}" ]
then
footerMessage="${paramFooterMessage}"
elif [ -z "${footerMessage}" ]
then then
footerMessage="${defaultFooterMessage}" footerMessage="${defaultFooterMessage}"
fi fi
if [ -z "${logLevel}" ] if [ -n "${paramLogLevel}" ]
then
logLevel="${paramLogLevel}"
elif [ -z "${logLevel}" ]
then then
logLevel="${defaultLogLevel}" logLevel="${defaultLogLevel}"
fi fi
if [ -z "${logFile}" ] if [ -n "${paramLogFile}" ]
then
logFile="${paramLogFile}"
elif [ -z "${logFile}" ]
then then
logFile="${workingDirectory}/${defaultLogFile}" logFile="${workingDirectory}/${defaultLogFile}"
fi fi
@@ -203,6 +250,19 @@ then
fi fi
# script # script
# output current config
log 3 "current config"
log 3 " configFile: ${configFile}"
log 3 " apacheWebRootPath: ${apacheWebRootPath}"
log 3 " installWebPath: ${installWebPath}"
log 3 " installDir: ${installDir}"
log 3 " enableGallery: ${enableGallery}"
log 3 " headerMessage: ${headerMessage}"
log 3 " footerMessage: ${footerMessage}"
log 3 " logLevel: ${logLevel}"
log 3 " logFile: ${logFile}"
log 1 "- creating install directory ${installDir}" log 1 "- creating install directory ${installDir}"
mkdir -p "${installDir}" mkdir -p "${installDir}"
if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
@@ -211,6 +271,8 @@ if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
fi fi
log 1 "- copying apaxy in install directory" log 1 "- copying apaxy in install directory"
# we want globbing
# shellcheck disable=SC2086
cp -r ${workingDirectory}/apaxy/* "${installDir}/" cp -r ${workingDirectory}/apaxy/* "${installDir}/"
log 1 "- configuring apaxy in install directory" log 1 "- configuring apaxy in install directory"

View File

@@ -52,7 +52,7 @@ installWebPath=""
enableGallery=false enableGallery=false
# set the default header message displayed on top of each page # set the default header message displayed on top of each page
defaultHeaderMessage="default header message" defaultHeaderMessage=""
# set the default footer message displayed on bottom of each page # set the default footer message displayed on bottom of each page
defaultFooterMessage="default footer message" defaultFooterMessage=""