mirror of
https://github.com/zhigang1992/replace-in-file.git
synced 2026-04-30 13:42:33 +08:00
Fix #2: return array of changed files in callback
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user