UNPKG

@notadd/cli

Version:

notadd core none dependence

91 lines (90 loc) 4.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InitCommand = void 0; const tslib_1 = require("tslib"); const path_1 = require("path"); const fs_1 = require("fs"); const child_process_1 = require("child_process"); const readline_sync_1 = require("readline-sync"); const path = require("path"); const fs = require("fs"); const cli_core_1 = require("@notadd/cli-core"); const shelljs_1 = tslib_1.__importDefault(require("shelljs")); const core_1 = require("@notadd/core"); let InitCommand = class InitCommand { async init(gdbc) { const { green, yellow } = require("colorette"); let projectName = readline_sync_1.question(yellow('Please enter project name :'), { charlist: '$<a-z>' }).trim(); projectName = this.specialCharacte(projectName); console.log(`init ${projectName} ing...`); let notGenerateFile = ['.git', 'node_modules', '.gitignore', 'init.ts', 'undefined.log', 'yarn.lock', 'init.js', 'package.json', '.vscode']; shelljs_1.default.exec(`mkdir ${projectName}`); let filePath = path_1.join(__dirname, gdbc ? "../init_template_v2" : "../init_template"); let writeFilePath = path_1.join(process.cwd(), `/${projectName}`); fileDisplay(filePath, writeFilePath, projectName); const value = ['npm i', 'yarn']; const index = readline_sync_1.keyInSelect(value, yellow('Please choose :')); if (index > -1) { console.log("Dependencies downloading ..."); child_process_1.execSync(`cd ${projectName}/ && ${value[index]} `); console.log(green('Initialization successful! ')); console.log(green('Start command: yarn start ')); } function fileDisplay(filePath, writeFilePath, projectName) { const files = fs_1.readdirSync(filePath); files.filter(it => !notGenerateFile.includes(it)).forEach(function (filename) { var fileDir = path.join(filePath, filename); var writeFileDir = path.join(writeFilePath, filename); const stats = fs.statSync(fileDir); let isFile = stats.isFile(); let isDir = stats.isDirectory(); if (isFile) { console.log(`${green(writeFilePath.replace(path_1.join(__dirname, "/"), "") + '/' + filename)}`); const data = fs_1.readFileSync(fileDir); let dataStr = data.toString(); let name = projectName.toLowerCase().charAt(0).toUpperCase() + projectName.slice(1); dataStr = dataStr.replace(new RegExp("initDemo", 'g'), projectName).replace(new RegExp("InitDemo", 'g'), name); writeFileDir = writeFileDir.replace(new RegExp("initDemo", 'g'), projectName); console.log(writeFileDir); if (filename === "package.md") { writeFileDir = writeFileDir.replace('package.md', 'package.json'); } if (filename === "env.md") { writeFileDir = writeFileDir.replace('env.md', '.env'); } fs_1.writeFileSync(writeFileDir, dataStr); } if (isDir) { if (filename === "initDemo") { writeFileDir = writeFileDir.replace(new RegExp("initDemo", 'g'), projectName); } fs_1.mkdirSync(writeFileDir); fileDisplay(fileDir, writeFileDir, projectName); } }); } } /* 特殊字符 */ specialCharacte(str) { var reg = " .*[`~!@#$%^&*()+=|{}_'--:;'_,\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?\\\\]+.*"; for (let i = 0; i < str.length && i < 15; i++) { let index = reg.lastIndexOf(str[i]); if (index !== -1) { str = str.replace(str[i], ""); i = i - 1; } } return str.toLowerCase().substring(0, 15); } }; tslib_1.__decorate([ cli_core_1.Command('init'), tslib_1.__param(0, core_1.Args('gdbc')), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [Boolean]), tslib_1.__metadata("design:returntype", Promise) ], InitCommand.prototype, "init", null); InitCommand = tslib_1.__decorate([ core_1.Controller() ], InitCommand); exports.InitCommand = InitCommand;