118 lines
3.3 KiB
JavaScript
118 lines
3.3 KiB
JavaScript
![]() |
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.changePlaceholderInTemplate = changePlaceholderInTemplate;
|
||
|
|
||
|
function _fs() {
|
||
|
const data = _interopRequireDefault(require("fs"));
|
||
|
|
||
|
_fs = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _path() {
|
||
|
const data = _interopRequireDefault(require("path"));
|
||
|
|
||
|
_path = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
function _cliTools() {
|
||
|
const data = require("@react-native-community/cli-tools");
|
||
|
|
||
|
_cliTools = function () {
|
||
|
return data;
|
||
|
};
|
||
|
|
||
|
return data;
|
||
|
}
|
||
|
|
||
|
var _walk = _interopRequireDefault(require("../../tools/walk"));
|
||
|
|
||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||
|
|
||
|
/**
|
||
|
TODO: This is a default placeholder for title in react-native template.
|
||
|
We should get rid of this once custom templates adapt `placeholderTitle` in their configurations.
|
||
|
*/
|
||
|
const DEFAULT_TITLE_PLACEHOLDER = 'Hello App Display Name';
|
||
|
|
||
|
function replaceNameInUTF8File(filePath, projectName, templateName) {
|
||
|
_cliTools().logger.debug(`Replacing in ${filePath}`);
|
||
|
|
||
|
const fileContent = _fs().default.readFileSync(filePath, 'utf8');
|
||
|
|
||
|
const replacedFileContent = fileContent.replace(new RegExp(templateName, 'g'), projectName).replace(new RegExp(templateName.toLowerCase(), 'g'), projectName.toLowerCase());
|
||
|
|
||
|
if (fileContent !== replacedFileContent) {
|
||
|
_fs().default.writeFileSync(filePath, replacedFileContent, 'utf8');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function renameFile(filePath, oldName, newName) {
|
||
|
const newFileName = _path().default.join(_path().default.dirname(filePath), _path().default.basename(filePath).replace(new RegExp(oldName, 'g'), newName));
|
||
|
|
||
|
_cliTools().logger.debug(`Renaming ${filePath} -> file:${newFileName}`);
|
||
|
|
||
|
_fs().default.renameSync(filePath, newFileName);
|
||
|
}
|
||
|
|
||
|
function shouldRenameFile(filePath, nameToReplace) {
|
||
|
return _path().default.basename(filePath).includes(nameToReplace);
|
||
|
}
|
||
|
|
||
|
function shouldIgnoreFile(filePath) {
|
||
|
return filePath.match(/node_modules|yarn.lock|package-lock.json/g);
|
||
|
}
|
||
|
|
||
|
const UNDERSCORED_DOTFILES = ['buckconfig', 'eslintrc.js', 'flowconfig', 'gitattributes', 'gitignore', 'prettierrc.js', 'watchmanconfig'];
|
||
|
|
||
|
function processDotfiles(filePath) {
|
||
|
const dotfile = UNDERSCORED_DOTFILES.find(e => filePath.includes(`_${e}`));
|
||
|
|
||
|
if (dotfile === undefined) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
renameFile(filePath, `_${dotfile}`, `.${dotfile}`);
|
||
|
}
|
||
|
|
||
|
function changePlaceholderInTemplate({
|
||
|
projectName,
|
||
|
placeholderName,
|
||
|
placeholderTitle = DEFAULT_TITLE_PLACEHOLDER,
|
||
|
projectTitle = projectName
|
||
|
}) {
|
||
|
_cliTools().logger.debug(`Changing ${placeholderName} for ${projectName} in template`);
|
||
|
|
||
|
(0, _walk.default)(process.cwd()).reverse().forEach(filePath => {
|
||
|
if (shouldIgnoreFile(filePath)) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!_fs().default.statSync(filePath).isDirectory()) {
|
||
|
replaceNameInUTF8File(filePath, projectName, placeholderName);
|
||
|
replaceNameInUTF8File(filePath, projectTitle, placeholderTitle);
|
||
|
}
|
||
|
|
||
|
if (shouldRenameFile(filePath, placeholderName)) {
|
||
|
renameFile(filePath, placeholderName, projectName);
|
||
|
}
|
||
|
|
||
|
if (shouldRenameFile(filePath, placeholderName.toLowerCase())) {
|
||
|
renameFile(filePath, placeholderName.toLowerCase(), projectName.toLowerCase());
|
||
|
}
|
||
|
|
||
|
processDotfiles(filePath);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
//# sourceMappingURL=editTemplate.js.map
|