UNPKG

xuqiang-cli

Version:

st-cli脚手架

55 lines (49 loc) 1.58 kB
const fs = require("fs-extra") const path = require("path") const util = require("util") const downloadGitRepo = require("download-git-repo") const Inquirer = require("inquirer") const api = require("./api") const loading = require("./loading") class Creator { constructor(name, target) { this.name = name this.target = target this.downloadGitRepo = util.promisify(downloadGitRepo) } async create() { // 获取模板 let repoList = await loading("waiting for fetching template", api.getRepo) let repos = repoList.map((item) => item.name) let { repo } = await new Inquirer.prompt([ { name: "repo", type: "list", message: "Please choose a template", choices: repos, }, ]) console.log(`你选择了: ${repo} 模板`) // 获取版本 let versionList = await loading("waiting for fetching version", api.getTagsByRepo, repo) let versions = versionList.map((item) => item.name) let version if (versions.length > 0) { version = await new Inquirer.prompt([ { name: "version", type: "list", message: "Please choose a version", choices: versions, }, ]) console.log(`你选择了: ${version.version} 版本`) } await this.download(repo, version.version).catch((err) => console.log(err)) } async download(repo, tag) { const templateUrl = `tyi4654/${repo}${tag ? "#" + tag : ""}` await loading("downloading template, please wait", this.downloadGitRepo, templateUrl, path.resolve(process.cwd(), this.target)) } } module.exports = Creator