abao-cli 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +19 -4
- package/commands/del.js +1 -1
- package/commands/init.js +43 -16
- package/package.json +13 -7
- package/utils/file.js +2 -0
- package/utils/temp.json +1 -0
package/bin/cli.js
CHANGED
@@ -12,12 +12,19 @@ const { del } = require("../commands/del")
|
|
12
12
|
|
13
13
|
const { init } = require("../commands/init")
|
14
14
|
|
15
|
+
const fs = require("fs")
|
16
|
+
|
17
|
+
const path = require("path")
|
18
|
+
|
19
|
+
const chalk = require("chalk")
|
20
|
+
|
15
21
|
program.version(packageConfig.version).option("-v, --version")
|
16
22
|
|
17
23
|
program.name("my-command").usage("可执行命令")
|
18
24
|
|
19
25
|
program
|
20
|
-
.command("
|
26
|
+
.command("list")
|
27
|
+
.alias("ls")
|
21
28
|
.description("查看模板列表")
|
22
29
|
.action(() => {
|
23
30
|
showList()
|
@@ -38,10 +45,18 @@ program
|
|
38
45
|
})
|
39
46
|
|
40
47
|
program
|
41
|
-
.command("init")
|
48
|
+
.command("init <projectName> [项目名称]")
|
42
49
|
.description("初始化模板")
|
43
|
-
.action(() => {
|
44
|
-
|
50
|
+
.action((projectName) => {
|
51
|
+
const cwd = process.cwd()
|
52
|
+
const fullPath = path.join(cwd, projectName)
|
53
|
+
if (fs.existsSync(fullPath)) {
|
54
|
+
console.log("\n")
|
55
|
+
console.log(chalk.yellow("警告:"), "目录已存在,请重新输入")
|
56
|
+
console.log("\n")
|
57
|
+
} else {
|
58
|
+
init(cwd, projectName)
|
59
|
+
}
|
45
60
|
})
|
46
61
|
|
47
62
|
program.parse()
|
package/commands/del.js
CHANGED
@@ -8,7 +8,7 @@ exports.del = async () => {
|
|
8
8
|
const tempJson = await readFile()
|
9
9
|
const nameArray = (tempJson || []).map(item => item.name)
|
10
10
|
|
11
|
-
if (nameArray.length === 0) return console.log("
|
11
|
+
if (nameArray.length === 0) return console.log("模板已为空,无需删除")
|
12
12
|
|
13
13
|
const question = [
|
14
14
|
{
|
package/commands/init.js
CHANGED
@@ -1,18 +1,31 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
|
3
|
-
const path = require("path")
|
4
|
-
const ora = require("ora")
|
5
3
|
const inquirer = require("inquirer")
|
6
|
-
const download = require("download-git-repo")
|
7
4
|
const { readFile } = require("../utils/file")
|
8
|
-
|
9
|
-
const
|
5
|
+
const path = require("path")
|
6
|
+
const download = require("download-git-repo")
|
7
|
+
const shell = require("shelljs")
|
8
|
+
const chalk = require("chalk")
|
9
|
+
const ora = require("ora")
|
10
|
+
const spinner = ora("Generate ing...")
|
10
11
|
|
11
|
-
|
12
|
+
const gitRegExp = /^http.*\.git$/
|
13
|
+
|
14
|
+
exports.init = async (cwd, projectName) => {
|
12
15
|
const tempJson = await readFile()
|
13
16
|
const nameArray = (tempJson || []).map(item => item.name)
|
14
17
|
|
15
18
|
const question = [
|
19
|
+
{
|
20
|
+
name: "git_origin",
|
21
|
+
type: "input",
|
22
|
+
message: "请输入git源地址",
|
23
|
+
validate(val) {
|
24
|
+
if (val === '') return 'git源地址必填'
|
25
|
+
else if (gitRegExp.test(val)) return true
|
26
|
+
else return '这不是一个有效的地址'
|
27
|
+
}
|
28
|
+
},
|
16
29
|
{
|
17
30
|
name: "name",
|
18
31
|
type: "list",
|
@@ -22,22 +35,36 @@ exports.init = async () => {
|
|
22
35
|
]
|
23
36
|
|
24
37
|
inquirer.prompt(question).then(async answer => {
|
25
|
-
const { name } = answer
|
38
|
+
const { name, git_origin } = answer
|
26
39
|
const { git_url, branch } = tempJson.find(item => item.name === name)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
spinner.start();
|
31
|
-
download(`direct:${git_url}#${branch}`, path.join(__dirname, '../test'), { clone: true }, err => {
|
40
|
+
spinner.start()
|
41
|
+
download(`direct:${git_url}#${branch}`, path.join(cwd, projectName), { clone: true }, err => {
|
42
|
+
spinner.stop()
|
32
43
|
if (err) {
|
33
|
-
console.log(err.message)
|
34
|
-
console.log('\n')
|
44
|
+
console.log(err.message)
|
45
|
+
console.log('\n')
|
35
46
|
// loading 失败
|
36
47
|
spinner.fail("Generate failed");
|
37
48
|
} else {
|
38
|
-
console.log('\n')
|
49
|
+
console.log('\n')
|
39
50
|
// loading 成功
|
40
|
-
spinner.succeed("Generate success")
|
51
|
+
spinner.succeed("Generate success")
|
52
|
+
|
53
|
+
console.log("\n")
|
54
|
+
//判定git命令是否可用
|
55
|
+
if (!shell.which('git')) {
|
56
|
+
//向命令行打印git命令不可用的提示信息
|
57
|
+
shell.echo('抱歉, git命令不可用')
|
58
|
+
//退出当前进程
|
59
|
+
shell.exit(1)
|
60
|
+
} else {
|
61
|
+
shell.cd(projectName)
|
62
|
+
shell.exec(`git init`)
|
63
|
+
shell.exec(`git remote add origin ${git_origin}`)
|
64
|
+
console.log("\n")
|
65
|
+
console.log(chalk.white("git 初始化成功:"), chalk.blue(git_origin))
|
66
|
+
console.log("\n")
|
67
|
+
}
|
41
68
|
}
|
42
69
|
})
|
43
70
|
})
|
package/package.json
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
{
|
2
2
|
"name": "abao-cli",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.2",
|
4
4
|
"description": "",
|
5
5
|
"main": "index.js",
|
6
|
-
"bin":
|
6
|
+
"bin": {
|
7
|
+
"abao-cli": "./bin/cli.js"
|
8
|
+
},
|
7
9
|
"scripts": {
|
8
|
-
"
|
10
|
+
"buildPublish": "npm publish"
|
9
11
|
},
|
10
|
-
"keywords": [
|
11
|
-
|
12
|
+
"keywords": [
|
13
|
+
"abao-cli"
|
14
|
+
],
|
15
|
+
"author": "bao",
|
12
16
|
"license": "ISC",
|
13
17
|
"dependencies": {
|
18
|
+
"chalk": "4.1.2",
|
14
19
|
"cli-table": "0.3.11",
|
15
20
|
"commander": "10.0.0",
|
16
21
|
"download-git-repo": "3.0.2",
|
17
|
-
"inquirer": "8.2.5"
|
22
|
+
"inquirer": "8.2.5",
|
23
|
+
"shelljs": "0.8.5"
|
18
24
|
}
|
19
|
-
}
|
25
|
+
}
|
package/utils/file.js
CHANGED
package/utils/temp.json
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
[]
|