xuqiang-cli
Version:
st-cli脚手架
55 lines (49 loc) • 1.58 kB
JavaScript
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