Add log messages to install.sh
This commit is contained in:
28
install.sh
28
install.sh
@@ -24,16 +24,22 @@ function configureLogging() {
|
|||||||
|
|
||||||
function filterModules() {
|
function filterModules() {
|
||||||
if [ "${#module}" -eq 0 ]; then
|
if [ "${#module}" -eq 0 ]; then
|
||||||
|
lop debug 'No modules given as arguments. Taking all modules.'
|
||||||
modulesToInstall=("${allModules[@]}")
|
modulesToInstall=("${allModules[@]}")
|
||||||
else
|
else
|
||||||
|
lop debug "Given ${#module} modules as arguments: ${module}"
|
||||||
|
[ "${inverse}" = true ] && lop debug 'Taking complement set.'
|
||||||
local mod pattern="^.*(${(j.|.)module})\$"
|
local mod pattern="^.*(${(j.|.)module})\$"
|
||||||
modulesToInstall=()
|
modulesToInstall=()
|
||||||
for mod in "${allModules[@]}"; do
|
for mod in "${allModules[@]}"; do
|
||||||
local found=false
|
local found=false
|
||||||
[[ "${mod}" =~ ${pattern} ]] && found=true
|
[[ "${mod}" =~ ${pattern} ]] && found=true
|
||||||
|
lop debug "Was ${mod} found in ${pattern}: ${found}"
|
||||||
if [ "${inverse}" != 'true' -a "${found}" = true ]; then
|
if [ "${inverse}" != 'true' -a "${found}" = true ]; then
|
||||||
|
lop debug "Adding module ${mod}"
|
||||||
modulesToInstall+=("${mod}")
|
modulesToInstall+=("${mod}")
|
||||||
elif [ "${inverse}" = 'true' -a "${found}" = false ]; then
|
elif [ "${inverse}" = 'true' -a "${found}" = false ]; then
|
||||||
|
lop debug "Adding module ${mod}"
|
||||||
modulesToInstall+=("${mod}")
|
modulesToInstall+=("${mod}")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -90,9 +96,13 @@ function parseQuestionLine() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function populateQuestionsWithModuleRequiredInformation() {
|
function populateQuestionsWithModuleRequiredInformation() {
|
||||||
|
log debug "Asking ${mod} for required information"
|
||||||
for line in "${(f)$(runModule "${mod}" --show-required-information)}"; do
|
for line in "${(f)$(runModule "${mod}" --show-required-information)}"; do
|
||||||
|
log debug "Says line: ${line}"
|
||||||
parseQuestionLine
|
parseQuestionLine
|
||||||
|
log debug "Parsing question returned status: $?"
|
||||||
done
|
done
|
||||||
|
log debug "Parsed questions are: ${(kv)questions}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertQuestionArgsToAskUserArgs() {
|
function convertQuestionArgsToAskUserArgs() {
|
||||||
@@ -126,6 +136,7 @@ function askUserQuestion() {
|
|||||||
local questionAndArgs=("${(f)questions[$questionID]}") args=()
|
local questionAndArgs=("${(f)questions[$questionID]}") args=()
|
||||||
local question="${questionAndArgs[1]}" questionArgs="${questionAndArgs[2]}"
|
local question="${questionAndArgs[1]}" questionArgs="${questionAndArgs[2]}"
|
||||||
convertQuestionArgsToAskUserArgs
|
convertQuestionArgsToAskUserArgs
|
||||||
|
lop debug "Converted args for askUser are: ${args}"
|
||||||
askUser "${args[@]}" "${question}"
|
askUser "${args[@]}" "${question}"
|
||||||
value="${REPLY}"
|
value="${REPLY}"
|
||||||
}
|
}
|
||||||
@@ -143,12 +154,18 @@ function answerQuestionsFromConfigOrAskUser() {
|
|||||||
local questionID
|
local questionID
|
||||||
for questionID in "${(k)questions[@]}"; do
|
for questionID in "${(k)questions[@]}"; do
|
||||||
local value configkeys=()
|
local value configkeys=()
|
||||||
|
lop debug "Answering question with ID: ${questionID}"
|
||||||
generateConfigKeysFromQuestionID "${mod}" "${questionID}"
|
generateConfigKeysFromQuestionID "${mod}" "${questionID}"
|
||||||
|
lop debug "Config keys for question are: ${configkeys}"
|
||||||
value="`config read "${configkeys[@]}"`"
|
value="`config read "${configkeys[@]}"`"
|
||||||
|
lop debug "Config answer for key is: ${value}"
|
||||||
if [ -z "${value}" ]; then
|
if [ -z "${value}" ]; then
|
||||||
|
lop debug 'Asking user'
|
||||||
askUserQuestion
|
askUserQuestion
|
||||||
|
lop debug "User answer is: ${value}"
|
||||||
config write "${value}" "${configkeys[@]}"
|
config write "${value}" "${configkeys[@]}"
|
||||||
fi
|
fi
|
||||||
|
lop debug "Adding answer: ${mod}_${questionID}=${value}"
|
||||||
answers+=("${mod}_${questionID}" "${value}")
|
answers+=("${mod}_${questionID}" "${value}")
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -156,7 +173,10 @@ function answerQuestionsFromConfigOrAskUser() {
|
|||||||
function askNecessaryQuestions() {
|
function askNecessaryQuestions() {
|
||||||
local mod
|
local mod
|
||||||
config setappname "de.astzweig.macos.system-setup"
|
config setappname "de.astzweig.macos.system-setup"
|
||||||
[ -n "${config_only}" ] && config setconfigfile "${config_only}"
|
if [ -n "${config_only}" ]; then
|
||||||
|
lop debug "Config only option given with value: ${config_only}"
|
||||||
|
config setconfigfile "${config_only}"
|
||||||
|
fi
|
||||||
for mod in ${modulesToInstall[@]}; do
|
for mod in ${modulesToInstall[@]}; do
|
||||||
local -A questions=()
|
local -A questions=()
|
||||||
populateQuestionsWithModuleRequiredInformation
|
populateQuestionsWithModuleRequiredInformation
|
||||||
@@ -173,8 +193,13 @@ function printModulesToInstall() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loadModules() {
|
function loadModules() {
|
||||||
|
local mod
|
||||||
modpath=("${_DIR}/modules" "${modpath[@]}")
|
modpath=("${_DIR}/modules" "${modpath[@]}")
|
||||||
|
lop debug "Module paths are: ${modpath[@]}"
|
||||||
allModules=("${(f)$(find "${modpath[@]}" -type f -perm +u=x -maxdepth 1 2> /dev/null | sort -n)}")
|
allModules=("${(f)$(find "${modpath[@]}" -type f -perm +u=x -maxdepth 1 2> /dev/null | sort -n)}")
|
||||||
|
for mod in "${allModules[@]}"; do
|
||||||
|
lop debug "Found module ${mod}"
|
||||||
|
done
|
||||||
filterModules
|
filterModules
|
||||||
[ "${list}" = true ] && printModulesToInstall
|
[ "${list}" = true ] && printModulesToInstall
|
||||||
}
|
}
|
||||||
@@ -233,6 +258,7 @@ function main() {
|
|||||||
ensureDocopts
|
ensureDocopts
|
||||||
autoloadZShLib
|
autoloadZShLib
|
||||||
configureLogging
|
configureLogging
|
||||||
|
lop debug "Called main with $# args: $@"
|
||||||
loadModules
|
loadModules
|
||||||
askNecessaryQuestions
|
askNecessaryQuestions
|
||||||
[ -z "${config_only}" ] || return 0
|
[ -z "${config_only}" ] || return 0
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
Describe 'answerQuestionsFromConfigOrAskUser'
|
Describe 'answerQuestionsFromConfigOrAskUser'
|
||||||
Include ./install.sh
|
Include ./install.sh
|
||||||
|
lop setoutput -l panic tostdout
|
||||||
mod="testmod"
|
mod="testmod"
|
||||||
|
|
||||||
It 'does nothing if module has no questions'
|
It 'does nothing if module has no questions'
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
Describe 'askNecessaryQuestions'
|
Describe 'askNecessaryQuestions'
|
||||||
Include ./install.sh
|
Include ./install.sh
|
||||||
|
lop setoutput -l panic tostdout
|
||||||
|
|
||||||
It 'sets config app name'
|
It 'sets config app name'
|
||||||
appname=''
|
appname=''
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
Describe 'filterModules'
|
Describe 'filterModules'
|
||||||
Include ./install.sh
|
Include ./install.sh
|
||||||
|
lop setoutput -l panic tostdout
|
||||||
|
|
||||||
It 'returns all modules if no module arg is given'
|
It 'returns all modules if no module arg is given'
|
||||||
allModules=(module1 module2 'module3 with space') modulesToInstall=()
|
allModules=(module1 module2 'module3 with space') modulesToInstall=()
|
||||||
When call filterModules
|
When call filterModules
|
||||||
|
|||||||
Reference in New Issue
Block a user