workbench-template-view
Version:
a tool for download git repository
150 lines (142 loc) • 6.78 kB
JavaScript
const fs = require('fs-extra')
const path = require('path')
const downloadGitRepo = require('download-git-repo')
const inquirer = require('inquirer')
const ora = require('ora')
const chalk = require('chalk')
const serve = require('serve')
const detectPort = require('detect-port')
const opn = require('opn')
const figlet = require('figlet')
function copyTmpl(name, tmplName) {
if (/^eris$/i.test(name)) {
let spinner = ora('bia2eris downloading...'),
tmplGitRepo = 'gitlab:git.mail.netease.com:activity_pub/bia2eris#master',
dist = path.join(process.cwd(), 'bia');
spinner.start();
downloadGitRepo(tmplGitRepo, dist, { clone: true }, function(err) {
spinner.stop();
if (!err) {
figlet('^ Bia >>>', function(err, data) {
if (err) {
console.log(chalk.yellow(err));
return;
}
console.log(data);
console.log('Bia success.');
});
} else {
console.log(chalk.yellow(err));
}
});
return;
} else if (/^act$/i.test(name)) {
let spinner = ora(`bia2act downloading...`),
tmplGitRepo = 'gitlab:git.mail.netease.com:activity_pub/bia2act#master',
dist = path.join(process.cwd(), 'bia');
spinner.start();
downloadGitRepo(tmplGitRepo, dist, { clone: true }, function(err) {
spinner.stop();
if (!err) {
fs.copy(path.join(process.cwd(), 'bia'), path.join(process.cwd(), ''), err => {
if (err) return console.error(err)
fs.remove(path.join(process.cwd(), 'bia'), err => {
if (err) return console.error(err)
let question = [
{
type: 'list',
name: 'category',
message: '请选择初始化的模版种类',
choices: ['严选', '有钱', '邮箱大师', 'demo'],
filter: function(_val) {
return _val;
}
},
{
type: 'list',
name: 'platform',
message: '请选择pc或移动端',
choices: ['PC&H5', 'PC', 'H5'],
filter: function(_val) {
return _val;
}
}
];
inquirer.prompt(question).then((_answers) => {
let _category = _answers.category,
_platform = _answers.platform,
_categoryType = '',
_platformType = '';
if (_category == '严选') {
_categoryType = 'yanxuan';
} else if (_category == '有钱') {
_categoryType = 'youqian';
} else if (_category == '邮箱大师') {
_categoryType = 'mailmaster';
} else if (_category == 'demo') {
_categoryType = 'demo';
} else {
//
}
if (_platform == 'PC') {
_category = 1;
} else if (_platform == 'H5') {
_category = 2;
} else {
_category = 0;
}
spinner = ora(`bia2act tpl downloading...`);
spinner.start();
tmplGitRepo = `gitlab:git.mail.netease.com:activity_pub/bia_tpl#${_categoryType}`;
dist = path.join(process.cwd(), 'src');
fs.removeSync(path.join(process.cwd(), 'src'))
downloadGitRepo(tmplGitRepo, dist, { clone: true }, function(err) {
spinner.stop();
if (!err) {
fs.copy(path.join(process.cwd(), `src/${_categoryType}`), path.join(process.cwd(), `src`), err => {
if (err) return console.error(err)
fs.remove(path.join(process.cwd(), `src/${_categoryType}`), err => {
if (err) return console.error(err)
if (_category == 1) {
fs.removeSync(path.join(process.cwd(), `src/h5`));
} else if (_category == 2) {
fs.removeSync(path.join(process.cwd(), `src/pc`));
} else {
//
}
fs.removeSync(path.join(process.cwd(), `src/README.md`));
figlet('^ Bia >>>', function(err, data) {
if (err) {
console.log(chalk.yellow(err));
return;
}
console.log(data);
console.log('Bia success.');
});
});
});
} else {
console.log(chalk.yellow(err));
}
});
});
})
})
} else {
console.log(chalk.yellow(err));
}
});
} else if (/^server$/i.test(name)) {
detectPort(8337).then((port) => {
serve(path.join(process.cwd(), ''), {
port: `${port}`
});
opn(`http://localhost:${port}`)
})
return;
} else {
console.log(chalk.yellow('bia命令已更新,创建活动请先新建活动目录,在目录内执行bia act'));
return;
}
}
module.exports = copyTmpl