Split prerequisites check into three stages
This commit is contained in:
@@ -1,9 +1,15 @@
|
|||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
# vi: ft=zsh
|
# vi: ft=zsh
|
||||||
|
|
||||||
function checkPrerequisites() {
|
function getQuestionsPrerequisites() {
|
||||||
local -A cmds=(
|
cmds=(
|
||||||
[docopts]='(with -f option supported)'
|
[systemsetup]=''
|
||||||
|
)
|
||||||
|
requireRootPrivileges
|
||||||
|
}
|
||||||
|
|
||||||
|
function getExecPrerequisites() {
|
||||||
|
cmds=(
|
||||||
[osascript]=''
|
[osascript]=''
|
||||||
[scutil]=''
|
[scutil]=''
|
||||||
[systemsetup]=''
|
[systemsetup]=''
|
||||||
@@ -12,8 +18,6 @@ function checkPrerequisites() {
|
|||||||
[defaults]=''
|
[defaults]=''
|
||||||
[launchctl]=''
|
[launchctl]=''
|
||||||
)
|
)
|
||||||
test "`id -u`" -eq 0 || { lop -- -e 'This module requires root access. Please run as root.'; return 11 }
|
|
||||||
checkCommands
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getQuestions() {
|
function getQuestions() {
|
||||||
|
|||||||
@@ -187,20 +187,30 @@ function configure_system() {
|
|||||||
allowOnlyFileVaultUserToUnlock "${filevault_username}"
|
allowOnlyFileVaultUserToUnlock "${filevault_username}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPrerequisites() {
|
function getHelpPrerequisites() {
|
||||||
local -A cmds=(
|
cmds=(
|
||||||
[docopts]='(with -f option supported)'
|
|
||||||
[tr]=''
|
[tr]=''
|
||||||
[cut]=''
|
[scutil]=''
|
||||||
|
)
|
||||||
|
addDocoptsToCmds
|
||||||
|
}
|
||||||
|
|
||||||
|
function getQuestionsPrerequisites() {
|
||||||
|
cmds=(
|
||||||
|
[find]=''
|
||||||
[dscl]=''
|
[dscl]=''
|
||||||
|
[sysadminctl]=''
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getExecPrerequisites() {
|
||||||
|
cmds=(
|
||||||
|
[cut]=''
|
||||||
[fdesetup]=''
|
[fdesetup]=''
|
||||||
[base64]=''
|
[base64]=''
|
||||||
[dsimport]=''
|
[dsimport]=''
|
||||||
[sysadminctl]=''
|
|
||||||
[scutil]=''
|
|
||||||
)
|
)
|
||||||
test "`id -u`" -eq 0 || { lop -- -e 'This module requires root access. Please run as root.'; return 11 }
|
requireRootPrivileges
|
||||||
checkCommands
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getQuestions() {
|
function getQuestions() {
|
||||||
|
|||||||
@@ -246,9 +246,8 @@ function configure_system() {
|
|||||||
popd -q
|
popd -q
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPrerequisites() {
|
function getExecPrerequisites() {
|
||||||
local -A cmds=(
|
cmds=(
|
||||||
[docopts]='(with -f option supported)'
|
|
||||||
[dscl]=''
|
[dscl]=''
|
||||||
[dseditgroup]=''
|
[dseditgroup]=''
|
||||||
[chown]=''
|
[chown]=''
|
||||||
@@ -259,8 +258,7 @@ function checkPrerequisites() {
|
|||||||
[awk]=''
|
[awk]=''
|
||||||
[sysadminctl]=''
|
[sysadminctl]=''
|
||||||
)
|
)
|
||||||
test "`id -u`" -eq 0 || { lop -- -e 'This module requires root access. Please run as root.'; return 11 }
|
requireRootPrivileges
|
||||||
checkCommands
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDefaultHomebrewUsername() {
|
function getDefaultHomebrewUsername() {
|
||||||
|
|||||||
@@ -94,14 +94,11 @@ function configure_system() {
|
|||||||
popd -q
|
popd -q
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkPrerequisites() {
|
function getExecPrerequisites() {
|
||||||
local -A cmds=(
|
cmds=(
|
||||||
[docopts]='(with -f option supported)'
|
|
||||||
)
|
|
||||||
local -A execCmds=(
|
|
||||||
[brew]=''
|
[brew]=''
|
||||||
)
|
)
|
||||||
test "`id -u`" -eq 0 || { lop -- -e 'This module requires root access. Please run as root.'; return 11 }
|
id -nG | grep admin >&! /dev/null || { lop -- -e 'This module requires the user to be in admin group. Please run again as either root or an admin user.'; return 11 }
|
||||||
checkCommands
|
checkCommands
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,17 +29,46 @@ function getModuleAnswerByKeyRegEx() {
|
|||||||
|
|
||||||
function checkCommands() {
|
function checkCommands() {
|
||||||
local cmd
|
local cmd
|
||||||
local varName=$1
|
for cmd in ${(k)cmds}; do
|
||||||
for cmd in ${(Pk)varName}; do
|
|
||||||
if ! which "${cmd}" >&! /dev/null; then
|
if ! which "${cmd}" >&! /dev/null; then
|
||||||
local comment=''
|
local comment=''
|
||||||
[ -n "${${(P)varName}[$cmd]}" ] && comment=" ${${(P)varName}[$cmd]}"
|
[ -n "${cmds[$cmd]}" ] && comment=" ${cmds[$cmd]}"
|
||||||
lop -- -e "This module needs ${cmd}${comment} to work."
|
lop -- -e "This module needs ${cmd}${comment} to work."
|
||||||
return 11
|
return 11
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function checkHelpPrerequisites() {
|
||||||
|
local -A cmds
|
||||||
|
getHelpPrerequisites || return
|
||||||
|
checkCommands
|
||||||
|
}
|
||||||
|
|
||||||
|
function addDocoptsToCmds() {
|
||||||
|
cmds+=(docopts '(with -f option supported)')
|
||||||
|
}
|
||||||
|
|
||||||
|
function requireRootPrivileges() {
|
||||||
|
test "`id -u`" -eq 0 || { lop -- -e 'This module requires root access. Please run as root.'; return 11 }
|
||||||
|
}
|
||||||
|
|
||||||
|
whence getHelpPrerequisites >&! /dev/null || function $_() {
|
||||||
|
addDocoptsToCmds
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkQuestionsPrerequisites() {
|
||||||
|
local -A cmds
|
||||||
|
getQuestionsPrerequisites || return
|
||||||
|
checkCommands
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkExecPrerequisites() {
|
||||||
|
local -A cmds
|
||||||
|
getExecPrerequisites || return
|
||||||
|
checkCommands
|
||||||
|
}
|
||||||
|
|
||||||
function showQuestions() {
|
function showQuestions() {
|
||||||
local questions=()
|
local questions=()
|
||||||
getQuestions
|
getQuestions
|
||||||
@@ -52,11 +81,18 @@ function module_main() {
|
|||||||
local cmdName=${1:t}
|
local cmdName=${1:t}
|
||||||
shift
|
shift
|
||||||
autoloadZShLib || return
|
autoloadZShLib || return
|
||||||
checkPrerequisites cmds || return
|
checkHelpPrerequisites || return
|
||||||
configureLogging
|
configureLogging
|
||||||
eval "`getUsage $cmdName | docopts -f -V - -h - : "$@"`"
|
eval "`getUsage $cmdName | docopts -f -V - -h - : "$@"`"
|
||||||
[ $# -lt 1 ] && return
|
checkQuestionsPrerequisites || return
|
||||||
[ "${show_questions}" = true ] && { showQuestions; return }
|
[ "${show_questions}" = true ] && { showQuestions; return }
|
||||||
checkPrerequisites execCmds || return
|
checkExecPrerequisites || return
|
||||||
configure_system
|
configure_system
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function {
|
||||||
|
local name
|
||||||
|
for name in getQuestionsPrerequisites getExecPrerequisites getQuestions getUsage; do
|
||||||
|
whence ${name} >&! /dev/null || function $_() {}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user