UNPKG

simple-coder

Version:

simple code tool

142 lines (127 loc) 5.4 kB
#!/usr/bin/env node const fs = require('fs'); const path = require('path'); const chalk = require('chalk'); const ora = require('ora'); const projectSetup = require('./lib/operation'); const codeTools = require('./lib/code-tools'); const executeTools = require('./lib/execute-tool'); const createProjectSet = async (configData,workRootPath)=> { let result = true; if (!configData.name){ console.log(' *** application name not found!') return ""; } const appliationName = configData.name; //const templateName = configData.templateName; //const USER_HOME = process.env.HOME || process.env.USERPROFILE; const tempPath = path.join(getTempWorkPath(),"/projects"); if(!workRootPath){ workRootPath = path.join(tempPath,appliationName); } if (fs.existsSync(workRootPath)) { console.log(chalk.red(' ***WARNING!*** target directory is existed! ')); let removeFiles = 'rm -rf ' + workRootPath; if(!executeTools.executeCommand(removeFiles,'remove old files')){ return false; }; } const loading = ora('processing ...');// 设置loading效果 const appIdStart = configData.appId; let subProjectName = ''; let subProjectWorkPath = ''; let success = ''; configData.templateName = 'server:spring-boot'; configData.appId = appIdStart + 1; configData.name = subProjectName = appliationName + '-service'; subProjectWorkPath = path.join(workRootPath,subProjectName); success = await createProject(configData,subProjectWorkPath); configData.templateName = 'mini-program:taro'; configData.appId = appIdStart + 2; configData.name = subProjectName = appliationName + '-mini'; subProjectWorkPath = path.join(workRootPath,subProjectName); success = await createProject(configData,subProjectWorkPath); configData.templateName = 'web-admin:antd-pro'; configData.appId = appIdStart + 3; configData.name = subProjectName = appliationName + '-admin'; subProjectWorkPath = path.join(workRootPath,subProjectName); success = await createProject(configData,subProjectWorkPath); if (!success){ loading.fail(chalk.red('project creating failure !')); return ""; } loading.succeed('project creating success!'); return workRootPath; } const createProject = async (configData,workRootPath)=> { let result = true; if (!configData.name){ console.log(' *** application name not found!') return ""; } const appliationName = configData.name; const templateName = configData.templateName; //const USER_HOME = process.env.HOME || process.env.USERPROFILE; const tempPath = path.join(getTempWorkPath(),"/projects"); if(!workRootPath){ workRootPath = path.join(tempPath,appliationName); } if (fs.existsSync(workRootPath)) { console.log(chalk.red(' ***WARNING!*** target directory is existed! ')); let removeFiles = 'rm -rf ' + workRootPath; if(!executeTools.executeCommand(removeFiles,'remove old files')){ return false; }; } const loading = ora('processing ...');// 设置loading效果 const template = await projectSetup.fetchTemplateConfig(templateName); const success = await projectSetup.initProjectByTemplate(template,configData,workRootPath); if (!success){ loading.fail(chalk.red('project creating failure !')); return ""; } loading.succeed('project creating success!'); return workRootPath; } const createProjectExt = async (configData,workRootPath)=> { let result = true; if (!configData.name){ console.log(' *** application name not found!') return ""; } const appliationName = configData.name; const templateName = configData.templateName; //const USER_HOME = process.env.HOME || process.env.USERPROFILE; const tempPath = path.join(getTempWorkPath(),"/projects"); if(!workRootPath){ workRootPath = path.join(tempPath,appliationName); } if (fs.existsSync(workRootPath)) { console.log(chalk.red(' ***WARNING!*** target directory is existed! ')); let removeFiles = 'rm -rf ' + workRootPath; if(!executeTools.executeCommand(removeFiles,'remove old files')){ return false; }; } const loading = ora('processing ...');// 设置loading效果 //const template = await projectSetup.fetchTemplateConfig(templateName); let template ={url:configData.url,id:configData.templateType} const success = await projectSetup.initProjectByTemplateWithoutCompnents(template,configData,workRootPath); if (!success){ loading.fail(chalk.red('project creating failure !')); return ""; } loading.succeed('project creating success!'); return workRootPath; } const getTempWorkPath = (newPath) =>{ return projectSetup.getTempWorkPath(newPath); } const getSupportApplications = () =>{ return projectSetup.getSupportApplications(); } module.exports.getSupportApplications = getSupportApplications; module.exports.getTempWorkPath = getTempWorkPath; module.exports.createProject = createProject; module.exports.createProjectExt = createProjectExt; module.exports.createProjectSet = createProjectSet;