cr-react-cli
Version:
Create react files with a single command
54 lines (53 loc) • 2.24 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// Libs
const fs_1 = __importDefault(require("fs"));
const case_1 = __importDefault(require("case"));
const child_process_1 = require("child_process");
const lodash_1 = require("lodash");
// Helpers
const file_path_1 = __importDefault(require("../../file-path"));
const path_1 = require("../../utils/path");
const template_1 = require("../../utils/template");
// Configuration
const configuration_1 = require("../../configuration");
// Templates
const context_template_1 = __importDefault(require("../../templates/context/context.template"));
// Base
const base_action_1 = __importDefault(require("../base.action"));
class CreateContextAction extends base_action_1.default {
async handle(inputs, options) {
const config = (0, lodash_1.merge)((0, configuration_1.loadScopeConfiguration)('context'), options);
const name = !inputs.name.toLowerCase().endsWith('context')
? `${inputs.name}Context`
: inputs.name;
const filePath = new file_path_1.default({
name: inputs === null || inputs === void 0 ? void 0 : inputs.name,
fileExtension: (config.typescript ? 'ts' : 'js') + (config.customProvider ? 'x' : ''),
sourcePath: (0, configuration_1.getSourcePath)(),
namePlaceholders: {
'{type}': 'context',
},
config: config,
});
await (0, path_1.handlePathCheck)(filePath.baseDir);
await (0, path_1.handleFileCheck)(filePath.full);
if (config.inFolder) {
this.createFolder(filePath.dir);
}
const template = new context_template_1.default(case_1.default.pascal(name), config).build();
await this.create(filePath.full, (0, template_1.formatTemplate)(template));
if (config.open) {
(0, child_process_1.exec)(filePath.full);
}
}
createFolder(path) {
if (fs_1.default.existsSync(path)) {
return;
}
fs_1.default.mkdirSync(path);
}
}
exports.default = CreateContextAction;