From 08a4df5b5173974876249e3e698db849795952fb Mon Sep 17 00:00:00 2001 From: iddoeldor Date: Mon, 25 Mar 2019 14:52:35 +0200 Subject: [PATCH] Create WIP_ios_app_info.js --- scripts/WIP_ios_app_info.js | 58 +++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 scripts/WIP_ios_app_info.js diff --git a/scripts/WIP_ios_app_info.js b/scripts/WIP_ios_app_info.js new file mode 100644 index 0000000..3f46afc --- /dev/null +++ b/scripts/WIP_ios_app_info.js @@ -0,0 +1,58 @@ +function dictFromNSDictionary(nsDict) { + var jsDict = {}; + var keys = nsDict.allKeys(); + var count = keys.count(); + for (var i = 0; i < count; i++) { + var key = keys.objectAtIndex_(i); + var value = nsDict.objectForKey_(key); + jsDict[key.toString()] = value.toString(); + } + + return jsDict; +} + +function arrayFromNSArray(nsArray) { + var jsArray = []; + var count = nsArray.count(); + for (var i = 0; i < count; i++) { + jsArray[i] = nsArray.objectAtIndex_(i).toString(); + } + return jsArray; +} + +function infoDictionary() { + if (ObjC.available && "NSBundle" in ObjC.classes) { + var info = ObjC.classes.NSBundle.mainBundle().infoDictionary(); + return dictFromNSDictionary(info); + } + return null; +} + +function infoLookup(key) { + if (ObjC.available && "NSBundle" in ObjC.classes) { + var info = ObjC.classes.NSBundle.mainBundle().infoDictionary(); + var value = info.objectForKey_(key); + if (value === null) { + return value; + } else if (value.class().toString() === "__NSCFArray") { + return arrayFromNSArray(value); + } else if (value.class().toString() === "__NSCFDictionary") { + return dictFromNSDictionary(value); + } else { + return value.toString(); + } + } + return null; +} + +console.log(JSON.stringify({ + name: infoLookup("CFBundleName"), + bundleId: ObjC.classes.NSBundle.mainBundle().bundleIdentifier().toString(), + version: infoLookup("CFBundleVersion"), + path: { + bundle: ObjC.classes.NSBundle.mainBundle().bundlePath().toString(), + data: ObjC.classes.NSProcessInfo.processInfo().environment().objectForKey_("HOME").toString(), + binary: ObjC.classes.NSBundle.mainBundle().executablePath().toString() + }, + info: infoDictionary() +}, null, 2))