mirror of
https://github.com/mtan93/Installomator.git
synced 2026-04-04 06:13:14 +01:00
added function for JSON parsing using JXA
This commit is contained in:
@@ -22,7 +22,7 @@ cleanupAndExit() { # $1 = exit code, $2 message, $3 level
|
||||
printlog "$2" $3
|
||||
fi
|
||||
printlog "################## End Installomator, exit code $1 \n" REQ
|
||||
|
||||
|
||||
# if label is wrong and we wanted name of the label, then return ##################
|
||||
if [[ $RETURN_LABEL_NAME -eq 1 ]]; then
|
||||
1=0 # If only label name should be returned we exit without any errors
|
||||
@@ -199,6 +199,16 @@ xpath() {
|
||||
fi
|
||||
}
|
||||
|
||||
# from @Pico: https://macadmins.slack.com/archives/CGXNNJXJ9/p1652222365989229?thread_ts=1651786411.413349&cid=CGXNNJXJ9
|
||||
getJSONValue() {
|
||||
# $1: JSON string OR file path to parse (tested to work with up to 1GB string and 2GB file).
|
||||
# $2: JSON key path to look up (using dot or bracket notation).
|
||||
printf '%s' "$1" | /usr/bin/osascript -l 'JavaScript' \
|
||||
-e "let json = $.NSString.alloc.initWithDataEncoding($.NSFileHandle.fileHandleWithStandardInput.readDataToEndOfFile$(/usr/bin/uname -r | /usr/bin/awk -F '.' '($1 > 18) { print "AndReturnError(ObjC.wrap())" }'), $.NSUTF8StringEncoding)" \
|
||||
-e 'if ($.NSFileManager.defaultManager.fileExistsAtPath(json)) json = $.NSString.stringWithContentsOfFileEncodingError(json, $.NSUTF8StringEncoding, ObjC.wrap())' \
|
||||
-e "const value = JSON.parse(json.js)$([ -n "${2%%[.[]*}" ] && echo '.')$2" \
|
||||
-e 'if (typeof value === "object") { JSON.stringify(value, null, 4) } else { value }'
|
||||
}
|
||||
|
||||
getAppVersion() {
|
||||
# modified by: Søren Theilgaard (@theilgaard) and Isaac Ordonez
|
||||
|
||||
Reference in New Issue
Block a user