UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

211 lines (210 loc) 7.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createNewPage = void 0; const chalk_1 = __importDefault(require("chalk")); const Slug_1 = require("diginext-utils/dist/Slug"); const string_1 = require("diginext-utils/dist/string"); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const generateName = (name) => { // name = (0, string_1.capitalizeName)((0, string_1.clearUnicodeCharacters)(name)).replace(/\ /g, ""); return name; }; const generateFileName = (name) => { // name = (0, Slug_1.makeSlug)((0, string_1.clearUnicodeCharacters)(name)); return name; }; async function createNewPage(options) { // const isExample = options.e || options.example; const isBlank = options.b || options.blank; const isThree = options.t || options.three; const isPixi = options.p || options.pixi; const isOverwrite = options.o || options.overwrite; const DIR_NAME = process.cwd(); const args = options._.slice(); args.shift(); args.shift(); const checkFramework = () => { // if (fs_1.default.existsSync(path_1.default.resolve(DIR_NAME, "package.json"))) { const { dependencies } = require(path_1.default.resolve(DIR_NAME, "package.json")); const { next } = dependencies; if (next) { if (!fs_1.default.existsSync(path_1.default.resolve(DIR_NAME, "tsconfig.json"))) { // console.log(chalk_1.default.red(`Not found tsconfig.json`)); console.log(chalk_1.default.red(`Support typescript only`)); return false; } } else { console.log(chalk_1.default.red(`Not found NextJS`)); return false; } } else { console.log(chalk_1.default.red(`Not found package.json`)); return false; } return true; }; if (!checkFramework()) return; const pathPages = args.map((x) => { const name = generateName(x); const nameComponent = `Page${name}`; const fileName = generateFileName(x); let PATH_PAGE = "pages"; let PATH_COMPONENT_PAGE = "components/router"; let PATH_MODULE = "modules"; let PAGE_TEMPLATE_FILENAME = "page-name"; let COMPONENT_TEMPLATE_FILENAME = "page-name"; const list = []; if (isExample) { PATH_PAGE = "pages/examples"; PATH_COMPONENT_PAGE = "components/router/examples"; } switch (true) { // case isBlank: { PAGE_TEMPLATE_FILENAME = "blank"; COMPONENT_TEMPLATE_FILENAME = "blank"; } break; case isThree: { PAGE_TEMPLATE_FILENAME = "page-name"; COMPONENT_TEMPLATE_FILENAME = "three"; PATH_MODULE = "modules/three/scenes"; const nameClass = `${name}Scene`; // list.push({ source: path_1.default.resolve(__dirname, `../templates/nextjs/ts/0.1/modules/three.txt`), target: `src/${PATH_MODULE}/${nameClass}.tsx`, replaces: [ { source: /\\t/g, target: "\t", }, { source: /@@PAGE_FILE_NAME/g, target: name, }, ], }); } break; case isPixi: { PAGE_TEMPLATE_FILENAME = "page-name"; COMPONENT_TEMPLATE_FILENAME = "pixi"; PATH_MODULE = "modules/pixi/scenes"; const nameClass = `${name}Scene`; // list.push({ source: path_1.default.resolve(__dirname, `../templates/nextjs/ts/0.1/modules/pixi.txt`), target: `src/${PATH_MODULE}/${nameClass}.tsx`, replaces: [ { source: /\\t/g, target: "\t", }, { source: /@@PAGE_FILE_NAME/g, target: name, }, ], }); } break; default: break; } list.push(...[ { source: path_1.default.resolve(__dirname, `../templates/nextjs/ts/0.1/pages/${PAGE_TEMPLATE_FILENAME}.txt`), target: `src/${PATH_PAGE}/${fileName}.tsx`, replaces: [ // { source: /\\t/g, target: "\t", }, { source: /@@URL/g, target: `/${fileName}`, }, { source: /@@PAGE_NAME/g, target: (0, string_1.capitalizeName)(fileName), }, { source: /@@PAGE_FILE_NAME/g, target: name, }, { source: /@@PATH_COMPONENT/g, target: `@/${PATH_COMPONENT_PAGE}/${nameComponent}`, }, ], }, { source: path_1.default.resolve(__dirname, `../templates/nextjs/ts/0.1/components/${COMPONENT_TEMPLATE_FILENAME}.txt`), target: `src/${PATH_COMPONENT_PAGE}/${nameComponent}.tsx`, replaces: [ // { source: /\\t/g, target: "\t", }, { source: /@@PAGE_FILE_NAME/g, target: name, }, ], }, ]); return { name, list, }; }); const createaFileAndReplaceText = async (list) => { await Promise.all(list.map(async ({ source, target, replaces }) => { // let content = fs_1.default.readFileSync(source, "utf-8"); replaces.forEach((item) => { content = content.replace(item.source, item.target); }); const dirPath = path_1.default.dirname(`${DIR_NAME}/${target}`); if (fs_1.default.existsSync(target)) { if (isOverwrite) { // console.log(chalk_1.default.green(`Overwrite ${target}!`)); } else { console.log(chalk_1.default.yellow(`Found ${target} exited! do you want use -o or --overwrite?`)); return; } } if (!fs_1.default.existsSync(dirPath)) { fs_1.default.mkdirSync(dirPath, { recursive: true }); } fs_1.default.writeFileSync(`${DIR_NAME}/${target}`, content); })); // }; await Promise.all(pathPages.map(async ({ name, list }) => { await createaFileAndReplaceText(list); })); // } exports.default = createNewPage; exports.createNewPage = createNewPage;