cr-react-cli
Version:
Create react files with a single command
38 lines (37 loc) • 2.25 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// Libs
const promises_1 = __importDefault(require("fs/promises"));
const path_1 = __importDefault(require("path"));
// Helpers
const object_1 = require("../../utils/object");
const path_2 = require("../../utils/path");
const template_1 = require("../../utils/template");
// Configuration
const configuration_1 = require("../../configuration");
// Templates
const index_template_1 = __importDefault(require("../../templates/index/index.template"));
// Base
const base_action_1 = __importDefault(require("../base.action"));
class CreateIndexAction extends base_action_1.default {
async handle(inputs, options) {
const config = (0, object_1.merge)(options, inputs === null || inputs === void 0 ? void 0 : inputs.configOverride, (0, configuration_1.loadScopeConfiguration)('project'));
const parsedInputFilePath = path_1.default.parse(inputs.file.path);
const indexFileExtension = config.typescript ? 'ts' : 'js';
const indexFilePath = path_1.default.resolve(parsedInputFilePath.dir, `index.${indexFileExtension}`);
const relativeImportPath = (0, path_2.removeExtension)(path_1.default.join(path_1.default.relative(parsedInputFilePath.dir, parsedInputFilePath.dir), parsedInputFilePath.base));
try {
const source = await promises_1.default.readFile(indexFilePath, 'utf-8');
const template = new index_template_1.default((0, path_2.fixRelativePath)(relativeImportPath), inputs === null || inputs === void 0 ? void 0 : inputs.export).include(source);
await this.update(indexFilePath, (0, template_1.formatTemplate)(template));
}
catch {
const template = new index_template_1.default((0, path_2.fixRelativePath)(relativeImportPath), inputs === null || inputs === void 0 ? void 0 : inputs.export).build();
await (0, path_2.handlePathCheck)(path_1.default.parse(indexFilePath).dir);
await this.create(indexFilePath, (0, template_1.formatTemplate)(template));
}
}
}
exports.default = CreateIndexAction;