Check prerequisites in install.sh

This commit is contained in:
Rezart Qelibari
2022-02-13 21:54:17 +01:00
parent 460083a95d
commit c472221459
3 changed files with 83 additions and 0 deletions

View File

@@ -228,9 +228,26 @@ function installModules() {
done
}
function isMacOS() {
autoload is-at-least
[ "`uname -s`" = Darwin ] || return
is-at-least "10.13" "`sw_vers -productVersion 2> /dev/null`"
}
function isPlistBuddyInstalled() {
test -x /usr/libexec/PlistBuddy && return
which PlistBuddy >&! /dev/null && return
}
function checkPrerequisites() {
isMacOS || { lop error 'This setup is only for macOS 10.13 and up.'; return 10 }
isPlistBuddyInstalled || { lop error 'This setup requires PlistBuddy to be either at /usr/libexec or in any of the PATH directories.'; return 11 }
}
function main() {
ensureDocopts
autoloadZShLib
checkPrerequisites || return
eval "`docopts -f -V - -h - : "$@" <<- USAGE
Usage: $0 [options] [-m PATH]... [<module>...]

40
spec/isMacOS_spec.sh Normal file
View File

@@ -0,0 +1,40 @@
Describe 'isMacOS'
Include ./install.sh
uname() { [ "${1}" = -s ] && echo Darwin }
It 'returns failure if sw_vers is not installed'
sw_vers() { echo "zsh: command not found: sw_vers" >&2; return 127 }
When call isMacOS
The output should eq ''
The status should be failure
End
It 'returns failure if os version is below 10.13'
sw_vers() { echo "1.1" }
When call isMacOS
The output should eq ''
The status should be failure
End
It 'returns success if os version is 10.13'
sw_vers() { echo "10.13" }
When call isMacOS
The output should eq ''
The status should be success
End
It 'returns success if os version is above 10.13'
sw_vers() { echo "17.04" }
When call isMacOS
The output should eq ''
The status should be success
End
It 'returns failure if kernel name is not Darwin'
sw_vers() { echo "10.13" }
uname() { [ "${1}" = -s ] && echo Linux }
When call isMacOS
The output should eq ''
The status should be failure
End
End

View File

@@ -0,0 +1,26 @@
Describe 'isPlistBuddyInstalled'
Include ./install.sh
It 'returns success if PlistBuddy path exists'
test() { [ "$1" = "-x" ] && return }
When call isPlistBuddyInstalled
The output should eq ''
The status should be success
End
It 'returns success if PlistBuddy is in PATH'
test() { [ "$1" = "-x" ] && return 1 }
which() { [ "$1" = "PlistBuddy" ] && return }
When call isPlistBuddyInstalled
The output should eq ''
The status should be success
End
It 'returns failure if PlistBuddy neither is in Path nor at usual path'
test() { [ "$1" = "-x" ] && return 1 }
which() { [ "$1" = "PlistBuddy" ] && return 1 }
When call isPlistBuddyInstalled
The output should eq ''
The status should be failure
End
End