From 9936a039cc8541c613aa1d4dd123f1d8b48f75ff Mon Sep 17 00:00:00 2001 From: sebv Date: Tue, 25 Mar 2014 16:23:58 +0800 Subject: [PATCH] safer rimraf --- lib/devices/ios/ios.js | 75 ++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/lib/devices/ios/ios.js b/lib/devices/ios/ios.js index a4f6fb651..003801cc6 100644 --- a/lib/devices/ios/ios.js +++ b/lib/devices/ios/ios.js @@ -972,9 +972,8 @@ IOS.prototype.deleteSim = function (cb) { var simRoot = getSimRoot(); logger.info("Deleting simulator folder: " + simRoot); if (fs.existsSync(simRoot)) { - rimraf.sync(simRoot); - } - cb(); + rimraf(simRoot, cb); + } else cb(); }; IOS.prototype.cleanupAppState = function (cb) { @@ -984,48 +983,44 @@ IOS.prototype.cleanupAppState = function (cb) { logger.error("Could not remove: " + err.message); cb(err); } else { - var filesExamined = 0; - var doneWithFile = function () { - filesExamined++; - if (filesExamined === files.length) { - cb(); - } - }.bind(this); if (files.length) { - for (var i = 0; i < files.length; i++) { - if (!this.keepAppToRetainPrefs) { - rimraf.sync(files[i]); - logger.info("Deleted " + files[i]); - if (i === 0 && this.args.keepKeyChains) { - mkdirp.sync(files[i]); + try { + _(files).each(function (file, i) { + if (!this.keepAppToRetainPrefs) { + rimraf.sync(file); + logger.info("Deleted " + file); + if (i === 0 && this.args.keepKeyChains) { + mkdirp.sync(file); + } + } + var root = path.dirname(file); + var tcc = path.join(root, 'Library/TCC'); + if (fs.existsSync(tcc)) { + rimraf.sync(tcc); + logger.info("Deleted " + tcc); } - } - var root = path.dirname(files[i]); - var tcc = path.join(root, 'Library/TCC'); - if (fs.existsSync(tcc)) { - rimraf.sync(tcc); - logger.info("Deleted " + tcc); - } + var caches = path.join(root, 'Library/Caches/locationd'); + if (fs.existsSync(caches)) { + rimraf.sync(caches); + logger.info("Deleted " + caches); + } - var caches = path.join(root, 'Library/Caches/locationd'); - if (fs.existsSync(caches)) { - rimraf.sync(caches); - logger.info("Deleted " + caches); - } + var media = path.join(root, 'Media'); + if (fs.existsSync(media)) { + rimraf.sync(media); + logger.info("Deleted " + media); + } - var media = path.join(root, 'Media'); - if (fs.existsSync(media)) { - rimraf.sync(media); - logger.info("Deleted " + media); - } - - var keychain = path.join(root, 'Library/Keychains'); - if (!this.args.keepKeyChains && fs.existsSync(keychain)) { - rimraf.sync(keychain); - logger.info("Deleted " + keychain); - } - doneWithFile(); + var keychain = path.join(root, 'Library/Keychains'); + if (!this.args.keepKeyChains && fs.existsSync(keychain)) { + rimraf.sync(keychain); + logger.info("Deleted " + keychain); + } + }, this); + cb(); + } catch (err) { + cb(err); } } else { logger.info("No folders found to remove");