1
0
mirror of https://github.com/oupala/apaxy.git synced 2025-01-16 13:00:45 +01: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'
# default config
defaultLogLevel=2
defaultLogFile="$(basename "${0}" .sh).log"
defaultConfigFile="apaxy.config"
defaultApacheWebRootPath="/var/www/html"
defaultInstallWebPath=""
defaultEnableGallery=false
defaultHeaderMessage="default header message"
defaultFooterMessage="default footer message"
defaultHeaderMessage=""
defaultFooterMessage=""
defaultLogLevel=2
defaultLogFile="$(basename "${0}" .sh).log"
workingDirectory="$(dirname "${0}")"
logLevel="${defaultLogLevel}"
# functions
@ -43,6 +45,7 @@ EOF
Available optionnal parameters are :
-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
-w - set path/to/dir/ directory where apaxy will be available on the httpd server
-g - enable or disable gallery feature
@ -58,7 +61,7 @@ EOF
##
displayUsage () {
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
}
@ -89,15 +92,6 @@ log () {
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)
while [ "$#" -ge 1 ] ; do
case "${1}" in
@ -105,33 +99,37 @@ while [ "$#" -ge 1 ] ; do
displayHelp
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
shiftStep=2
apacheWebRootPath="${2}"
paramApacheWebRootPath="${2}"
;;
-w) # set path/to/dir/ directory where apaxy will be installed on the filesystem
shiftStep=2
installWebPath="${2}"
paramInstallWebPath="${2}"
;;
-g) # enable or disable gallery feature
shiftStep=2
enableGallery="${2}"
paramEnableGallery="${2}"
;;
-hm) # set the default header message displayed on top of each page
shiftStep=2
headerMessage="${2}"
paramHeaderMessage="${2}"
;;
-fm) # set the default footer message displayed on bottom of each page
shiftStep=2
footerMessage="${2}"
paramFooterMessage="${2}"
;;
-ll) # set the log level
shiftStep=2
logLevel="${2}"
paramLogLevel="${2}"
;;
-lf) # set the log file
shiftStep=2
logFile="${2}"
paramLogFile="${2}"
;;
*)
displayUsage
@ -149,44 +147,93 @@ while [ "$#" -ge 1 ] ; do
done
# 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
apacheWebRootPath="${defaultApacheWebRootPath}"
fi
if [ -z "${installWebPath}" ]
if [ -n "${paramInstallWebPath}" ]
then
installWebPath="${paramInstallWebPath}"
elif [ -z "${installWebPath}" ]
then
installWebPath="${defaultInstallWebPath}"
fi
if [ -n "${apacheWebRootPath}" ] && [ -z "${installWebPath}" ]
if [ -n "${paramApacheWebRootPath}" ]
then
installDir="${apacheWebRootPath}"
else
installDir="${apacheWebRootPath}${installWebPath}"
apacheWebRootPath="${paramApacheWebRootPath}"
elif [ -z "${apacheWebRootPath}" ]
then
apacheWebRootPath="${defaultApacheWebRootPath}"
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
enableGallery="${defaultEnableGallery}"
fi
if [ -z "${headerMessage}" ]
if [ -n "${paramHeaderMessage}" ]
then
headerMessage="${paramHeaderMessage}"
elif [ -z "${headerMessage}" ]
then
headerMessage="${defaultHeaderMessage}"
fi
if [ -z "${footerMessage}" ]
if [ -n "${paramFooterMessage}" ]
then
footerMessage="${paramFooterMessage}"
elif [ -z "${footerMessage}" ]
then
footerMessage="${defaultFooterMessage}"
fi
if [ -z "${logLevel}" ]
if [ -n "${paramLogLevel}" ]
then
logLevel="${paramLogLevel}"
elif [ -z "${logLevel}" ]
then
logLevel="${defaultLogLevel}"
fi
if [ -z "${logFile}" ]
if [ -n "${paramLogFile}" ]
then
logFile="${paramLogFile}"
elif [ -z "${logFile}" ]
then
logFile="${workingDirectory}/${defaultLogFile}"
fi
@ -203,6 +250,19 @@ then
fi
# 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}"
mkdir -p "${installDir}"
if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
@ -211,6 +271,8 @@ if [ ! -d "${installDir}" ] || [ ! -w "${installDir}" ]; then
fi
log 1 "- copying apaxy in install directory"
# we want globbing
# shellcheck disable=SC2086
cp -r ${workingDirectory}/apaxy/* "${installDir}/"
log 1 "- configuring apaxy in install directory"

View File

@ -52,7 +52,7 @@ installWebPath=""
enableGallery=false
# 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
defaultFooterMessage="default footer message"
defaultFooterMessage=""