UNPKG

bia

Version:

a tool for download git repository

311 lines (291 loc) 7.96 kB
/* * @Author: hzxulin@yeah.net * @Date: 2018-11-20 20:59:08 * @Last Modified by: hzxulin@yeah.net * @Last Modified time: 2019-07-25 16:57:50 */ const path = require('path') const inquirer = require('inquirer') const GIT_CONFIG = require('../../config/git.json') /** * 选择git的操作 */ const askGitOperation = () => { return new Promise((resolve, reject) => { const question = [{ type: 'list', name: 'type', message: '请选择要进行的操作', choices: [ { name: '生成excel模板', value: 'export', }, { name: '根据excel批量生成', value: 'import', }, ], filter: (val) => { return val }, }] try { inquirer.prompt(question).then((answer) => { resolve(answer.type) }) } catch (err) { reject(err) } }) } /** * 选择导出的路径 */ const askExportPath = () => { return new Promise((resolve, reject) => { const question = [ { type: 'input', name: 'dist', message: '选择生成的excel模板的目录(默认当前目录)', default: process.cwd(), validate: function (_val) { if (/\S+/.test(_val)) { return true } return '请输入正确的路径' }, }, ] try { inquirer.prompt(question).then((answer) => { resolve(answer.dist) }) } catch (err) { reject(err) } }) } /** * 填写git的配置信息 */ const askGitRepoInfo = () => { return new Promise((resolve, reject) => { let question = [ { type: 'input', name: 'token', message: '请输入git api的token', default: GIT_CONFIG.token || '', validate: function (_val) { if (/\S+/.test(_val)) { return true } return '请输入正确的token' }, }, { type: 'list', name: 'namespace_id', message: '请选择初始化git的group', choices: [ { name: 'act', value: '853', }, { name: 'eris', value: '1019', }, ], }, { type: 'input', name: 'name', message: '请输入git项目名称', validate: function (_val) { if (/\S+/.test(_val)) { return true } return '请输入正确的git项目名称' }, }, { type: 'input', name: 'description', message: '请输入git项目描述', validate: function (_val) { if (/\S+/.test(_val)) { return true } return '请输入正确的git项目描述' }, }, ] try { inquirer.prompt(question).then(answer => { resolve(answer) }) } catch (err) { reject(err) } }) } /** * 选择git的runner list * @param {object} projectOpts git的配置项 */ const askGitRunner = (projectOpts = {}) => { return new Promise((resolve, reject) => { let _list = projectOpts.runnerList _list.forEach(_v => { _v.value = _v.id _v.name = `${_v.id} - ${_v.description}` }) const question = [ { type: 'list', name: 'runner_id', message: '请选择需要激活的runner', choices: _list, }, ] try { inquirer.prompt(question).then(answer => { projectOpts = Object.assign(projectOpts, { runner_id: answer.runner_id }) resolve(projectOpts) }) } catch (err) { reject(err) } }) } /** * 选择导入的excel文件 */ const askImportExcel = () => { return new Promise((resolve, reject) => { const question = [ { type: 'input', name: 'file', message: '选择导入的excel模板的目录(默认当前目录的 git-tpl.xlsx)', default: 'git-tpl.xlsx', validate: function (_val) { if (/\.xlsx$/.test(_val)) { return true } return '请输入正确的 xlsx 文件' }, }, ] try { inquirer.prompt(question).then((answer) => { resolve(path.resolve(process.cwd(), answer.file)) }) } catch (err) { reject(err) } }) } /** * 选择git配置信息的操作, 这里主要进行 token 设置 */ const askConfigOperation = () => { return new Promise((resolve, reject) => { const emptyFlag = !GIT_CONFIG.token const choices = emptyFlag ? [ { name: '设置token', value: 'set', }, ] : [ { name: '设置token', value: 'set', }, { name: '删除token', value: 'clear', }, ] const question = [{ type: 'list', name: 'type', message: '请选择要进行的操作', choices, filter: (val) => { return val }, }] try { inquirer.prompt(question).then((answer) => { resolve(answer.type) }) } catch (err) { reject(err) } }) } /** * 查询要输入的 token 内容 */ const askTokenInput = () => { return new Promise((resolve, reject) => { const question = [ { type: 'input', name: 'token', message: '请输入 token 的值', validate: function (_val) { if (/\S+/.test(_val)) { return true } return '请输入正确的 token' }, }, ] try { inquirer.prompt(question).then((answer) => { resolve(answer.token) }) } catch (err) { reject(err) } }) } /** * 确认操作是否删除 */ const askTokenConfirm = () => { return new Promise((resolve, reject) => { const question = [ { type: 'confirm', name: 'clear', message: '确认删除?', default: false, }, ] try { inquirer.prompt(question).then((answer) => { resolve(answer.clear) }) } catch (err) { reject(err) } }) } module.exports = { askGitOperation, askExportPath, askGitRepoInfo, askGitRunner, askImportExcel, askConfigOperation, askTokenInput, askTokenConfirm, }