1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| #!/usr/bin/env node
const fs = require('fs'); const glob = require('glob'); const path = require('path'); const chalk = require('chalk'); const inquirer = require('inquirer'); const program = require('commander'); const download = require('../lib/download'); const generator = require('../lib/generator'); const logSymbols = require('log-symbols');
const latestVersion = require('latest-version');
program.usage('<project-name>') .option('-r, --repository [repository]', 'assign to repository') .parse(process.argv);
let projectName = program.args[0];
if (!projectName) { program.help(); return; }
const list = glob.sync('*'); let next = null; let rootName = path.basename(process.cwd()); if (list.length) { if (list.filter((name) => { const fileName = path.resolve(process.cwd(), path.join('.', name)); const isDir = fs.statSync(fileName).isDirectory(); return name.indexOf(projectName) !== -1 && isDir; }).length !== 0) { console.log(`项目${projectName}已经存在`); return; } next = Promise.resolve(projectName); } else { next = Promise.resolve(projectName); }
next && go();
function go() { next.then((projectRoot) => {
const repUrl = program.repository ? program.repository : 'http://git.mamaezhan.com/lvfan/epoch-ui-cli.git'; return download(projectRoot, repUrl).then((target) => { return { name: projectRoot, root: projectRoot, downloadTemp: target, }; }, (err) => { console.error(err) }).then((context) => { return inquirer.prompt([ { name: 'myEpochProjectName', message: '项目的名称', default: context.name, }, { name: 'myEpochProjectVersion', message: '项目的版本号', default: '1.0.0', }, { name: 'myEpochProjectDescription', message: '项目的简介', default: `A project named ${context.name}`, }, { name: 'myEpochAuthor', message: '项目的作者', default: 'root', }, ]).then((answers) => { return { ...context, metadata: { ...answers, }, }; }, (err) => { console.error(err); }); }, (err) => { console.error(err); }).then((context) => { return generator(context.metadata, `${context.downloadTemp}/.DOWN`, context.downloadTemp); }, (err) => { console.error(err); }).then((context) => { console.log(logSymbols.success, chalk.green('创建成功:)')); console.log(); console.log(chalk.green('cd ' + projectRoot + '\nyarn\nyarn run server')); }, (err) => { console.error(logSymbols.error, chalk.red(`创建失败:${err.message}`)); }); }); }
|