const fs = require('fs') const path = require('path') const log = require('../../util/log') const plist = require('../../util/plist') module.exports = { version: 4, name: 'backup.manifest', description: `Gets a backup's manifest plist`, requiresBackup: true, // Run on a v3 lib / backup object. async run (lib, { backup }) { // Load and parse the maniest for the backup. log.verbose('parsing manifest', backup.path) let data = plist.parseFile(path.join(backup.path, 'Manifest.plist')) // Remove this data, it's kind of useless. delete data['BackupKeyBag'] return data }, // Manifest fields. output: { SystemDomainsVersion: el => el.SystemDomainsVersion, Applications: el => el.Applications, Lockdown: el => { el = el.Lockdown return { ProductVersion: el.ProductVersion, BuildVersion: el.BuildVersion, DeviceName: el.DeviceName, SerialNumber: el.SerialNumber, ProductType: el.ProductType, UniqueDeviceID: el.UniqueDeviceID, ...el } }, Version: el => el.Version, IsEncrypted: el => el.IsEncrypted, WasPasscodeSet: el => el.WasPasscodeSet, Date: el => el.Date } }