"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.modifyAsync = modifyAsync; exports.cleanBackupAsync = cleanBackupAsync; exports.createBlankAsync = createBlankAsync; function _fsExtra() { const data = _interopRequireDefault(require("fs-extra")); _fsExtra = function () { return data; }; return data; } function _path() { const data = _interopRequireDefault(require("path")); _path = function () { return data; }; return data; } function _plist() { const data = _interopRequireDefault(require("plist")); _plist = function () { return data; }; return data; } function _ExponentTools() { const data = require("./ExponentTools"); _ExponentTools = function () { return data; }; return data; } function _Logger() { const data = _interopRequireDefault(require("./Logger")); _Logger = function () { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getNormalizedPlistFilename(plistName) { let plistFilename; if (plistName.indexOf('.') !== -1) { plistFilename = plistName; } else { plistFilename = `${plistName}.plist`; } return plistFilename; } /** * @param plistName base filename of property list. if no extension, assumes .plist */ async function modifyAsync(plistPath, plistName, transform) { let plistFilename = _getNormalizedPlistFilename(plistName); let configPlistName = _path().default.join(plistPath, plistFilename); let configFilename = _path().default.join(plistPath, `${plistName}.json`); // grab original plist as json object let config; if (process.platform === 'darwin') { await (0, _ExponentTools().spawnAsyncThrowError)('plutil', ['-convert', 'json', configPlistName, '-o', configFilename]); let configContents = await _fsExtra().default.readFile(configFilename, 'utf8'); try { config = JSON.parse(configContents); } catch (e) { _Logger().default.info(`Error parsing ${configFilename}`, e); _Logger().default.info('The erroneous file contents was:', configContents); config = {}; } } else { config = _plist().default.parse(_fsExtra().default.readFileSync(configPlistName, 'utf8')); } // apply transformation config = transform(config); // back up old plist and swap in modified one await (0, _ExponentTools().spawnAsyncThrowError)('/bin/cp', [configPlistName, `${configPlistName}.bak`]); await _fsExtra().default.writeFile(configFilename, JSON.stringify(config)); if (process.platform === 'darwin') { await (0, _ExponentTools().spawnAsyncThrowError)('plutil', ['-convert', 'xml1', configFilename, '-o', configPlistName]); } else { await _fsExtra().default.writeFile(configPlistName, _plist().default.build(config)); } return config; } async function createBlankAsync(plistPath, plistName) { // write empty json file const emptyConfig = {}; const tmpConfigFile = _path().default.join(plistPath, `${plistName}.json`); await _fsExtra().default.writeFile(tmpConfigFile, JSON.stringify(emptyConfig)); // convert to plist let plistFilename = _getNormalizedPlistFilename(plistName); let configPlistName = _path().default.join(plistPath, plistFilename); if (process.platform === 'darwin') { await (0, _ExponentTools().spawnAsyncThrowError)('plutil', ['-convert', 'xml1', tmpConfigFile, '-o', configPlistName]); } else { await _fsExtra().default.writeFile(configPlistName, JSON.stringify(_plist().default.build(emptyConfig))); } // remove tmp json file await (0, _ExponentTools().spawnAsyncThrowError)('/bin/rm', [tmpConfigFile]); } async function cleanBackupAsync(plistPath, plistName, restoreOriginal = true) { let plistFilename = _getNormalizedPlistFilename(plistName); let configPlistName = _path().default.join(plistPath, plistFilename); let configFilename = _path().default.join(plistPath, `${plistName}.json`); const backupPlistPath = `${configPlistName}.bak`; if (restoreOriginal && (await _fsExtra().default.pathExists(backupPlistPath))) { await _fsExtra().default.copy(backupPlistPath, configPlistName); } await _fsExtra().default.remove(backupPlistPath); await _fsExtra().default.remove(configFilename); } //# sourceMappingURL=../__sourcemaps__/detach/IosPlist.js.map