mirror of
https://github.com/zhigang1992/replace-in-file.git
synced 2026-01-12 22:51:48 +08:00
* Pass filename as last arg to replacer function * - Cleaned up replacer function override to use ES6 - Added replacer function tests to Async callback & Sync specs
37 lines
877 B
JavaScript
37 lines
877 B
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Dependencies
|
|
*/
|
|
const fs = require('fs');
|
|
const makeReplacements = require('./make-replacements');
|
|
|
|
/**
|
|
* Helper to replace in a single file (async)
|
|
*/
|
|
module.exports = function replaceAsync(file, from, to, enc) {
|
|
return new Promise((resolve, reject) => {
|
|
fs.readFile(file, enc, (error, contents) => {
|
|
//istanbul ignore if
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
|
|
//Replace contents and check if anything changed
|
|
let newContents = makeReplacements(contents, from, to, file);
|
|
if (newContents === contents) {
|
|
return resolve({file, hasChanged: false});
|
|
}
|
|
|
|
//Write to file
|
|
fs.writeFile(file, newContents, enc, error => {
|
|
//istanbul ignore if
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
resolve({file, hasChanged: true});
|
|
});
|
|
});
|
|
});
|
|
};
|