safer rimraf

This commit is contained in:
sebv
2014-03-25 16:23:58 +08:00
parent 60e9aa7fd5
commit 9936a039cc

View File

@@ -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");