UNPKG

fdm

Version:

基于gulp的1688前端集成化工具

114 lines (109 loc) 4.5 kB
var spawn = require('win-spawn'); var inquirer = require("inquirer"); var commander = require('commander'); var exec = require('child_process').exec; var question = {}; require('colors'); function _command(cmd, cb) { exec(cmd, function(err, stdout, stderr) { if (cb) { cb(stdout.split('\n').join('')); } }); } function _versionUp(version) { var v = version.replace(/\./g, ''); v = (parseInt(v) + 1) + ''; if (v.length < 3) { v = '0' + v; } return v.split('').join('.'); } module.exports = { help:function(){ console.log(); console.log('新建/切换分支'); console.log(' $', 'fdm publish'.green, 'br'); console.log(); console.log('daily发布'); console.log(' $', 'fdm publish'.green, 'daily'); console.log(); console.log('线上cdn发布'); console.log(' $', 'fdm publish'.green, 'cdn'); console.log(); }, run: function(argv) { commander.parse(argv); var question = {}; switch (commander.args[1]) { case 'npm': spawn('npm', ['publish'], { stdio: 'inherit' }); break; case 'br': question.br = { type: "input", name: "branch", }; _command('git describe --always --tag --abbrev=0', function(tag) { console.log("最新分支版本为" + tag.green); var version = tag.replace('publish/', ''); version = _versionUp(version); question.br.message = '确定要切换到分支' + version + '吗?如果不是请输入分支版本(' + version + '):'; inquirer.prompt([question.br], function(answers) { version = answers.branch || version; console.log("切换分支daily/" + version + "..."); spawn('git', ['checkout', '-b', 'daily/' + version], { stdio: 'inherit' }); }); }); break; case 'daily': question.daily = { type: "input", name: "daily", }; _command('git rev-parse --abbrev-ref HEAD', function(br) { var version = br.replace('daily/', ''); question.daily.message = '确定要发布分支' + br + '吗?如果不是请输入分支版本(' + version + '):'; inquirer.prompt([question.daily], function(answers) { version = answers.daily || version; console.log("发布分支daily/" + version + "..."); spawn('git', ['push', '-u', 'origin', 'daily/' + version], { stdio: 'inherit' }); }); }); break; case 'cdn': question.cdn = { type: "input", name: "cdn", }; _command('git describe --always --tag --abbrev=0', function(tag) { console.log("最新标签版本为" + tag.green); var version = tag.replace('publish/', ''); version = _versionUp(version); question.cdn.message = '确定要发布版本publish/' + version + '吗?如果不是请输入版本(' + version + '):'; inquirer.prompt([question.cdn], function(answers) { version = answers.cdn || version; console.log("发布" + version + "..."); spawn('git', ['pull', 'origin', 'master'], { stdio: 'inherit' }).on('close', function() { spawn('git', ['tag', 'publish/' + version], { stdio: 'inherit' }).on('close', function() { spawn('git', ['push', 'origin', 'publish/' + version], { stdio: 'inherit' }); }); }); }); }); break; } } };