Fix #2: return array of changed files in callback

This commit is contained in:
Adam Buczynski
2015-07-02 13:34:58 +12:00
parent 45b87cc373
commit b1aa42180a
2 changed files with 37 additions and 28 deletions

View File

@@ -13,17 +13,20 @@ function replaceInSingleFile(filePath, replaceThis, withThat, cb) {
if (error) {
return cb(error);
}
//Replace contents and check if anything changed
var newContents = contents.replace(replaceThis, withThat);
if (newContents !== contents) {
fs.writeFile(filePath, contents, 'utf8', function(error) {
if (error) {
return cb(error);
}
cb(null);
});
} else {
cb(null)
if (newContents === contents) {
cb(null, false);
}
//Write to file
fs.writeFile(filePath, contents, 'utf8', function(error) {
if (error) {
return cb(error);
}
cb(null, true);
});
});
}
@@ -33,24 +36,30 @@ function replaceInSingleFile(filePath, replaceThis, withThat, cb) {
module.exports = function replaceInFile(config, cb) {
cb = cb || function() {};
//Array given?
if (Array.isArray(config.files)) {
var totalFiles = config.files.length;
var replacedFiles = 0;
config.files.forEach(function(file) {
replaceInSingleFile(file, config.replace, config.with, function(error) {
if (error) {
return cb(error);
}
replacedFiles++;
if (replacedFiles === totalFiles) {
cb(null);
}
});
});
return;
//No array given?
if (!Array.isArray(config.files)) {
config.files = [config.files];
return replaceInFile(config, cb);
}
//Replace in single file
replaceInSingleFile(config.files, config.replace, config.with, cb);
//Initialize helper vars
var totalFiles = config.files.length;
var replacedFiles = 0;
var changedFiles = [];
//Replace each file
config.files.forEach(function(file) {
replaceInSingleFile(file, config.replace, config.with, function(error, hasChanged) {
if (error) {
return cb(error);
}
if (hasChanged) {
changedFiles.push(file);
}
replacedFiles++;
if (replacedFiles === totalFiles) {
cb(null, [changedFiles]);
}
});
});
};