mirror of
https://github.com/appium/appium.git
synced 2026-02-06 17:48:56 -06:00
handle both binary and xml plists in ios settings
This commit is contained in:
@@ -4,6 +4,7 @@ var logger = require('../../server/logger.js').get('appium')
|
||||
, _ = require('underscore')
|
||||
, fs = require('fs')
|
||||
, path = require('path')
|
||||
, xmlplist = require('plist')
|
||||
, bplistCreate = require('bplist-creator')
|
||||
, bplistParse = require('bplist-parser');
|
||||
|
||||
@@ -281,17 +282,36 @@ settings.updateSafariUserSettings = function (sdk, settingSet) {
|
||||
}
|
||||
};
|
||||
|
||||
var getPlistData = function (file) {
|
||||
var data;
|
||||
if (fs.existsSync(file)) {
|
||||
var fileData = fs.readFileSync(file);
|
||||
try {
|
||||
data = bplistParse.parseBuffer(fileData)[0];
|
||||
} catch (err) {
|
||||
if (err.message.indexOf("Invalid binary plist") !== -1) {
|
||||
logger.info("Plist was not binary format, retrying with xml");
|
||||
data = xmlplist(file)[0];
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw new Error("Settings file " + file + " did not exist");
|
||||
}
|
||||
return data;
|
||||
};
|
||||
|
||||
settings.getSettings = function (sdk, forPlist) {
|
||||
var files = getPlistPaths(forPlist, sdk);
|
||||
var bplists = {};
|
||||
_.each(files, function (file) {
|
||||
logger.info("Getting current settings for " + forPlist + " from " + file);
|
||||
if (fs.existsSync(file)) {
|
||||
var data = fs.readFileSync(file);
|
||||
bplists[file] = bplistParse.parseBuffer(data)[0];
|
||||
} else {
|
||||
try {
|
||||
bplists[file] = getPlistData(file);
|
||||
} catch (err) {
|
||||
bplists[file] = {};
|
||||
logger.warn("Settings file " + file + " did not exist");
|
||||
logger.warn(err.message);
|
||||
}
|
||||
});
|
||||
return bplists;
|
||||
|
||||
Reference in New Issue
Block a user