46 lines
998 B
JavaScript
46 lines
998 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, config) {
|
|
|
|
//Extract relevant config
|
|
const {encoding, dry, countMatches} = config;
|
|
|
|
//Wrap in promise
|
|
return new Promise((resolve, reject) => {
|
|
fs.readFile(file, encoding, (error, contents) => {
|
|
//istanbul ignore if
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
|
|
//Make replacements
|
|
const [result, newContents] = makeReplacements(
|
|
contents, from, to, file, countMatches
|
|
);
|
|
|
|
//Not changed or dry run?
|
|
if (!result.hasChanged || dry) {
|
|
return resolve(result);
|
|
}
|
|
|
|
//Write to file
|
|
fs.writeFile(file, newContents, encoding, error => {
|
|
//istanbul ignore if
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
resolve(result);
|
|
});
|
|
});
|
|
});
|
|
};
|