react-native-integrate
Version:
Automate integration of additional code into React Native projects
34 lines (33 loc) • 1.37 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.searchReplaceAllFiles = searchReplaceAllFiles;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
async function searchReplaceAllFiles(folderPath, search, replace, ignoreCase) {
const searchRegExp = new RegExp(search, ignoreCase ? 'gi' : 'g');
let changes = 0;
const files = await new Promise((resolve, reject) => fs_1.default.readdir(folderPath, { withFileTypes: true }, (err, files) => {
if (err)
reject(err);
else
resolve(files);
}));
for (const file of files) {
const filePath = path_1.default.join(folderPath, file.name);
if (file.isDirectory()) {
changes += await searchReplaceAllFiles(filePath, search, replace, ignoreCase);
}
else {
const fileContent = fs_1.default.readFileSync(filePath, 'utf8');
if (searchRegExp.test(fileContent)) {
const newFileContent = fileContent.replace(searchRegExp, replace);
fs_1.default.writeFileSync(filePath, newFileContent);
changes++;
}
}
}
return changes;
}