58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
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.warn(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))
|