UNPKG

bia

Version:

a tool for download git repository

86 lines (77 loc) 2.31 kB
/* * @Author: hzxulin@yeah.net * @Date: 2018-11-20 20:26:36 * @Last Modified by: hzxulin@yeah.net * @Last Modified time: 2019-06-01 17:48:36 */ const path = require('path') const execa = require('execa') const ora = require('ora') const fse = require('fs-extra') const figlet = require('figlet') const colors = require('colors') /** * clone远程git项目,去除.git文件 * @param {string} repo git的源地址 * @param {string} branch 分支名称 * @param {string} text 提示文案 */ const cloneGit = (repo, branch, text) => { text = text || '项目初始化中...' return new Promise((resolve, reject) => { const spinner = ora(`== ${text} ==`) const tplTemp = path.resolve(process.env.HOME, '.web-init-templates', repo.replace(/\/|:/g, '-')) spinner.start() fse.emptyDirSync(tplTemp) let cmd = `git clone ${branch ? `-b ${branch}` : ''} ${repo} ${tplTemp}` execa.shell(cmd).then(() => { fse.removeSync(path.resolve(tplTemp, '.git')) spinner.stop() resolve(tplTemp) }).catch(err => { spinner.stop() console.log('== 初始化异常,停止进程 ==') reject(err) }) }) } /** * 移动文件 * @param {string} file 文件名称 * @param {string} src 源路径 * @param {string} dist 目标路径 */ const moveFiles = (file, src, dist) => { return new Promise((resolve, reject) => { const srcFolder = file ? path.resolve(src, file) : src const distFolder = file ? path.resolve(dist, file) : dist try { fse.copySync(srcFolder, distFolder) resolve() } catch (err) { reject(err) } }) } /** * 成功打印logo * @param {function} cb 回调函数cb * @param {boolean} exitFlag 结束标志 */ const showSuccess = (cb, exitFlag) => { figlet('^ Bia >>>', (err, data) => { if (err) throw err console.log(colors.green(`\n${data}`)) if (Object.prototype.toString.call(cb) === '[object Function]') { cb() } else { console.log(colors.green('== Bia success. ==')) } if (exitFlag) process.exit() }) } module.exports = { cloneGit, moveFiles, showSuccess, }