Add log messages to install.sh

This commit is contained in:
Rezart Qelibari
2022-02-12 20:21:02 +01:00
parent 216cd329c0
commit 594467ec52
4 changed files with 31 additions and 1 deletions

View File

@@ -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

View File

@@ -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'

View File

@@ -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=''

View File

@@ -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