cloudcc-cli 1.2.8 → 1.3.0
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/README.md +896 -880
- package/bin/build.js +6 -6
- package/bin/buildccbasesdk.js +6 -6
- package/bin/buildccsdk.js +6 -6
- package/bin/buildtag.js +6 -6
- package/bin/create.js +6 -6
- package/bin/publish.js +6 -6
- package/bin/publishh5.js +6 -6
- package/package.json +39 -39
- package/src/buildTag.js +74 -74
- package/src/builderBaseSDK.js +89 -89
- package/src/builderPlugin.js +209 -209
- package/src/builderSDK.js +160 -160
- package/src/creatorTemProject.js +90 -90
- package/src/publishProject.js +239 -238
- package/src/publishProjectH5.js +180 -180
- package/template/Appvue +35 -35
- package/template/babelconfigjs +5 -5
- package/template/generateIDjs +4 -4
- package/template/httpjs +107 -108
- package/template/index.js +65 -65
- package/template/indexhtml +21 -21
- package/template/indexvue +343 -343
- package/template/mainjs +16 -16
- package/template/package-lockjson +12154 -12154
- package/template/packagejson +58 -58
- package/template/vueconfigjs +20 -20
- package/test/index.html +14 -14
- package/test/test.js +5 -5
- package/utils/askTool.js +95 -95
- package/utils/changeVersion copy.js +74 -74
- package/utils/changeVersion.js +26 -26
- package/utils/checkVersion.js +90 -90
- package/utils/deploy.js +8 -8
- package/utils/encryption.js +20 -20
- package/utils/github-markdown.min.css +1 -1
- package/utils/http.js +95 -95
- package/utils/md2html.js +88 -88
- package/utils/notifyIM.js +86 -86
- package/utils/pushCode.js +186 -186
- package/utils/test.js +1 -1
- package/utils/trigger.js +15 -15
- package/utils/updatei18n.js +126 -126
package/utils/pushCode.js
CHANGED
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 将代码提交到gitlab,并设置tag
|
|
3
|
-
*/
|
|
4
|
-
const exec = require('child_process').execSync;
|
|
5
|
-
const chalk = require("chalk")
|
|
6
|
-
const changeVersion = require("../utils/changeVersion")
|
|
7
|
-
/**
|
|
8
|
-
* 更改版本version
|
|
9
|
-
* @param {types} 版本类型,如Dev、uat,GA,Release
|
|
10
|
-
*/
|
|
11
|
-
function getNewVersionName(types) {
|
|
12
|
-
exec("git fetch --tags -f")
|
|
13
|
-
return types.map((item) => {
|
|
14
|
-
// 更新本地tag
|
|
15
|
-
let version = exec(`git tag --sort=-committerdate`)
|
|
16
|
-
version = version.toString("utf8").trim();
|
|
17
|
-
if (version) {
|
|
18
|
-
// 使用换行分隔下
|
|
19
|
-
let versions = version.split("\n");
|
|
20
|
-
// 取出第一个包含-V的版本号
|
|
21
|
-
version = versions.find((item) => {
|
|
22
|
-
return item.includes("V");
|
|
23
|
-
})
|
|
24
|
-
if (version) {
|
|
25
|
-
// 取版本号
|
|
26
|
-
version = version.split("V")[1]
|
|
27
|
-
// 改变版本号
|
|
28
|
-
version = changeVersion.change(version, item)
|
|
29
|
-
// 生成最后的版本号
|
|
30
|
-
item = "V" + version
|
|
31
|
-
} else {
|
|
32
|
-
item = "V0.0.1"
|
|
33
|
-
}
|
|
34
|
-
} else {
|
|
35
|
-
item = "V0.0.1"
|
|
36
|
-
}
|
|
37
|
-
return item;
|
|
38
|
-
})
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* 将代码推送至gitlab
|
|
43
|
-
* @param {version} 版本号
|
|
44
|
-
* @param {update} 是否强制更新:1强制更新,0不强制更新
|
|
45
|
-
* @returns true 成功,false 失败
|
|
46
|
-
*/
|
|
47
|
-
function push(version, update = "0") {
|
|
48
|
-
try {
|
|
49
|
-
// 添加改变文件
|
|
50
|
-
exec("git add .")
|
|
51
|
-
} catch (error) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
// 提交到本地
|
|
57
|
-
exec("git commit -m " + version)
|
|
58
|
-
} catch (error) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
console.log();
|
|
63
|
-
console.log(chalk.green('代码开始推送,请稍后...'));
|
|
64
|
-
try {
|
|
65
|
-
// 推送到服务器
|
|
66
|
-
exec("git push")
|
|
67
|
-
console.log();
|
|
68
|
-
console.log(chalk.green('代码推送成功!'));
|
|
69
|
-
} catch (error) {
|
|
70
|
-
console.log("update", update);
|
|
71
|
-
if ("1" == update) {
|
|
72
|
-
exec(`git fetch --tags -f && git pull --force`)
|
|
73
|
-
} else {
|
|
74
|
-
console.log(chalk.red('代码推送失败,本地代码与线上不同步,请先 git pull 同步!'));
|
|
75
|
-
console.log();
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return true
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* 设置Tags
|
|
83
|
-
* @param {types} 发布版本类型,如Dev,uat,GA,Release
|
|
84
|
-
* @param {versions} 版本tag信息,如Dev-V12.0.1
|
|
85
|
-
*/
|
|
86
|
-
function setTag(types, versions) {
|
|
87
|
-
console.log(chalk.green('开始同步Tag设置,请稍后...'));
|
|
88
|
-
try {
|
|
89
|
-
// 更新tag
|
|
90
|
-
exec("git fetch --tags -f")
|
|
91
|
-
} catch (error) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
// 删除本地版本Tag
|
|
95
|
-
versions.map((version) => {
|
|
96
|
-
try {
|
|
97
|
-
exec("git tag -d " + version)
|
|
98
|
-
} catch (error) {
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
types.map((type) => {
|
|
102
|
-
try {
|
|
103
|
-
// 删除本地发布Tag
|
|
104
|
-
exec("git tag -d " + type)
|
|
105
|
-
} catch (error) {
|
|
106
|
-
}
|
|
107
|
-
})
|
|
108
|
-
versions.map((version) => {
|
|
109
|
-
try {
|
|
110
|
-
// 删除远程Tag
|
|
111
|
-
exec("git push origin :refs/tags/" + version)
|
|
112
|
-
} catch (error) {
|
|
113
|
-
}
|
|
114
|
-
})
|
|
115
|
-
types.map((type) => {
|
|
116
|
-
try {
|
|
117
|
-
// 删除远程发布Tag
|
|
118
|
-
exec("git push origin :refs/tags/" + type)
|
|
119
|
-
} catch (error) {
|
|
120
|
-
}
|
|
121
|
-
})
|
|
122
|
-
|
|
123
|
-
// 添加tag
|
|
124
|
-
versions.map((version) => {
|
|
125
|
-
exec("git tag " + version + " -f")
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
types.map((type) => {
|
|
129
|
-
exec("git tag " + type + " -f")
|
|
130
|
-
})
|
|
131
|
-
// 推送tag
|
|
132
|
-
exec("git push --tags")
|
|
133
|
-
|
|
134
|
-
console.log(chalk.green('Tag设置成功!'));
|
|
135
|
-
console.log();
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* 删除dist文件夹
|
|
140
|
-
* @returns true 成功,false 失败
|
|
141
|
-
*/
|
|
142
|
-
function deleteDist() {
|
|
143
|
-
|
|
144
|
-
try {
|
|
145
|
-
// 删除dist文件夹
|
|
146
|
-
exec("git rm -r dist")
|
|
147
|
-
} catch (error) {
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
// 删除unpackage文件夹
|
|
153
|
-
exec("git rm -r unpackage")
|
|
154
|
-
} catch (error) {
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
try {
|
|
159
|
-
// 添加改变文件
|
|
160
|
-
exec("git add .")
|
|
161
|
-
} catch (error) {
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
try {
|
|
166
|
-
// 提交到本地
|
|
167
|
-
exec("git commit -m clear-dist")
|
|
168
|
-
} catch (error) {
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
// 推送到服务器
|
|
172
|
-
exec("git push")
|
|
173
|
-
} catch (error) {
|
|
174
|
-
|
|
175
|
-
}
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* 发布代码同时设置Tags
|
|
180
|
-
* @param {types} 版本集合
|
|
181
|
-
* @param {update} 是否强制更新
|
|
182
|
-
*/
|
|
183
|
-
function pushCodeAndTags(types = [], update = "0") {
|
|
184
|
-
let versions = getNewVersionName(types);
|
|
185
|
-
return push(versions[0], update) && setTag(types, versions) && deleteDist(versions[0]);
|
|
186
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* 将代码提交到gitlab,并设置tag
|
|
3
|
+
*/
|
|
4
|
+
const exec = require('child_process').execSync;
|
|
5
|
+
const chalk = require("chalk")
|
|
6
|
+
const changeVersion = require("../utils/changeVersion")
|
|
7
|
+
/**
|
|
8
|
+
* 更改版本version
|
|
9
|
+
* @param {types} 版本类型,如Dev、uat,GA,Release
|
|
10
|
+
*/
|
|
11
|
+
function getNewVersionName(types) {
|
|
12
|
+
exec("git fetch --tags -f")
|
|
13
|
+
return types.map((item) => {
|
|
14
|
+
// 更新本地tag
|
|
15
|
+
let version = exec(`git tag --sort=-committerdate`)
|
|
16
|
+
version = version.toString("utf8").trim();
|
|
17
|
+
if (version) {
|
|
18
|
+
// 使用换行分隔下
|
|
19
|
+
let versions = version.split("\n");
|
|
20
|
+
// 取出第一个包含-V的版本号
|
|
21
|
+
version = versions.find((item) => {
|
|
22
|
+
return item.includes("V");
|
|
23
|
+
})
|
|
24
|
+
if (version) {
|
|
25
|
+
// 取版本号
|
|
26
|
+
version = version.split("V")[1]
|
|
27
|
+
// 改变版本号
|
|
28
|
+
version = changeVersion.change(version, item)
|
|
29
|
+
// 生成最后的版本号
|
|
30
|
+
item = "V" + version
|
|
31
|
+
} else {
|
|
32
|
+
item = "V0.0.1"
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
item = "V0.0.1"
|
|
36
|
+
}
|
|
37
|
+
return item;
|
|
38
|
+
})
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 将代码推送至gitlab
|
|
43
|
+
* @param {version} 版本号
|
|
44
|
+
* @param {update} 是否强制更新:1强制更新,0不强制更新
|
|
45
|
+
* @returns true 成功,false 失败
|
|
46
|
+
*/
|
|
47
|
+
function push(version, update = "0") {
|
|
48
|
+
try {
|
|
49
|
+
// 添加改变文件
|
|
50
|
+
exec("git add .")
|
|
51
|
+
} catch (error) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
// 提交到本地
|
|
57
|
+
exec("git commit -m " + version)
|
|
58
|
+
} catch (error) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
console.log();
|
|
63
|
+
console.log(chalk.green('代码开始推送,请稍后...'));
|
|
64
|
+
try {
|
|
65
|
+
// 推送到服务器
|
|
66
|
+
exec("git push")
|
|
67
|
+
console.log();
|
|
68
|
+
console.log(chalk.green('代码推送成功!'));
|
|
69
|
+
} catch (error) {
|
|
70
|
+
console.log("update", update);
|
|
71
|
+
if ("1" == update) {
|
|
72
|
+
exec(`git fetch --tags -f && git pull --force`)
|
|
73
|
+
} else {
|
|
74
|
+
console.log(chalk.red('代码推送失败,本地代码与线上不同步,请先 git pull 同步!'));
|
|
75
|
+
console.log();
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return true
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 设置Tags
|
|
83
|
+
* @param {types} 发布版本类型,如Dev,uat,GA,Release
|
|
84
|
+
* @param {versions} 版本tag信息,如Dev-V12.0.1
|
|
85
|
+
*/
|
|
86
|
+
function setTag(types, versions) {
|
|
87
|
+
console.log(chalk.green('开始同步Tag设置,请稍后...'));
|
|
88
|
+
try {
|
|
89
|
+
// 更新tag
|
|
90
|
+
exec("git fetch --tags -f")
|
|
91
|
+
} catch (error) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// 删除本地版本Tag
|
|
95
|
+
versions.map((version) => {
|
|
96
|
+
try {
|
|
97
|
+
exec("git tag -d " + version)
|
|
98
|
+
} catch (error) {
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
types.map((type) => {
|
|
102
|
+
try {
|
|
103
|
+
// 删除本地发布Tag
|
|
104
|
+
exec("git tag -d " + type)
|
|
105
|
+
} catch (error) {
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
versions.map((version) => {
|
|
109
|
+
try {
|
|
110
|
+
// 删除远程Tag
|
|
111
|
+
exec("git push origin :refs/tags/" + version)
|
|
112
|
+
} catch (error) {
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
types.map((type) => {
|
|
116
|
+
try {
|
|
117
|
+
// 删除远程发布Tag
|
|
118
|
+
exec("git push origin :refs/tags/" + type)
|
|
119
|
+
} catch (error) {
|
|
120
|
+
}
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
// 添加tag
|
|
124
|
+
versions.map((version) => {
|
|
125
|
+
exec("git tag " + version + " -f")
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
types.map((type) => {
|
|
129
|
+
exec("git tag " + type + " -f")
|
|
130
|
+
})
|
|
131
|
+
// 推送tag
|
|
132
|
+
exec("git push --tags")
|
|
133
|
+
|
|
134
|
+
console.log(chalk.green('Tag设置成功!'));
|
|
135
|
+
console.log();
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* 删除dist文件夹
|
|
140
|
+
* @returns true 成功,false 失败
|
|
141
|
+
*/
|
|
142
|
+
function deleteDist() {
|
|
143
|
+
|
|
144
|
+
try {
|
|
145
|
+
// 删除dist文件夹
|
|
146
|
+
exec("git rm -r dist")
|
|
147
|
+
} catch (error) {
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
try {
|
|
152
|
+
// 删除unpackage文件夹
|
|
153
|
+
exec("git rm -r unpackage")
|
|
154
|
+
} catch (error) {
|
|
155
|
+
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
// 添加改变文件
|
|
160
|
+
exec("git add .")
|
|
161
|
+
} catch (error) {
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
try {
|
|
166
|
+
// 提交到本地
|
|
167
|
+
exec("git commit -m clear-dist")
|
|
168
|
+
} catch (error) {
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
// 推送到服务器
|
|
172
|
+
exec("git push")
|
|
173
|
+
} catch (error) {
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* 发布代码同时设置Tags
|
|
180
|
+
* @param {types} 版本集合
|
|
181
|
+
* @param {update} 是否强制更新
|
|
182
|
+
*/
|
|
183
|
+
function pushCodeAndTags(types = [], update = "0") {
|
|
184
|
+
let versions = getNewVersionName(types);
|
|
185
|
+
return push(versions[0], update) && setTag(types, versions) && deleteDist(versions[0]);
|
|
186
|
+
}
|
|
187
187
|
module.exports = { pushCodeAndTags, push, getNewVersionName, setTag }
|
package/utils/test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const fs = require('fs')
|
|
1
|
+
const fs = require('fs')
|
|
2
2
|
const exec = require('child_process').execSync;
|
package/utils/trigger.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 版本构建触发器
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const { get } = require('../utils/http');
|
|
6
|
-
|
|
7
|
-
async function jenkins(url) {
|
|
8
|
-
try {
|
|
9
|
-
await get(url)
|
|
10
|
-
} catch (error) {
|
|
11
|
-
}
|
|
12
|
-
return true
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
module.exports = { jenkins }
|
|
1
|
+
/**
|
|
2
|
+
* 版本构建触发器
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const { get } = require('../utils/http');
|
|
6
|
+
|
|
7
|
+
async function jenkins(url) {
|
|
8
|
+
try {
|
|
9
|
+
await get(url)
|
|
10
|
+
} catch (error) {
|
|
11
|
+
}
|
|
12
|
+
return true
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
module.exports = { jenkins }
|
package/utils/updatei18n.js
CHANGED
|
@@ -1,127 +1,127 @@
|
|
|
1
|
-
//文件下载
|
|
2
|
-
const fs = require("fs");
|
|
3
|
-
const path = require("path");
|
|
4
|
-
const axios = require('axios');
|
|
5
|
-
const chalk = require("chalk")
|
|
6
|
-
const inquirer = require("inquirer")
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// 创建文件夹目录
|
|
11
|
-
const filepath = "src/utils/i18n";
|
|
12
|
-
let dirCache = {};
|
|
13
|
-
/**
|
|
14
|
-
* 创建文件夹
|
|
15
|
-
*/
|
|
16
|
-
function mkdir(filepath) {
|
|
17
|
-
const arr = filepath.split('/');
|
|
18
|
-
let dir = arr[0];
|
|
19
|
-
for (let i = 1; i <= arr.length; i++) {
|
|
20
|
-
if (!dirCache[dir] && !fs.existsSync(dir)) {
|
|
21
|
-
dirCache[dir] = true;
|
|
22
|
-
console.log("创建", dir);
|
|
23
|
-
fs.mkdirSync(dir);
|
|
24
|
-
} else {
|
|
25
|
-
// console.log("文件夹" + dir + "已存在");
|
|
26
|
-
}
|
|
27
|
-
dir = dir + '/' + arr[i];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
mkdir(filepath)
|
|
31
|
-
/**
|
|
32
|
-
* 检查多语言文件是否需要更新,如果需要更新,返回要更新的语种集合,否则返回空。
|
|
33
|
-
*/
|
|
34
|
-
function checkVersion() {
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 选择要更新的文件集合
|
|
39
|
-
*/
|
|
40
|
-
function selectUpdateFiles() {
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* @param {fileUrl} 文件源地址
|
|
47
|
-
* @param {localPath} 保存的地址
|
|
48
|
-
* @param {fileName} 文件名
|
|
49
|
-
*/
|
|
50
|
-
function down2save(fileUrl, localPath, fileName) {
|
|
51
|
-
const mypath = path.resolve(localPath, fileName);
|
|
52
|
-
const writer = fs.createWriteStream(mypath);
|
|
53
|
-
console.log(fileName + " 开始下载");
|
|
54
|
-
return axios({
|
|
55
|
-
method: 'get',
|
|
56
|
-
url: fileUrl,
|
|
57
|
-
responseType: 'stream',
|
|
58
|
-
}).then(response => {
|
|
59
|
-
return new Promise((resolve, reject) => {
|
|
60
|
-
response.data.pipe(writer);
|
|
61
|
-
let error = null;
|
|
62
|
-
writer.on('error', err => {
|
|
63
|
-
console.log(fileName + " 下载失败", err);
|
|
64
|
-
error = err;
|
|
65
|
-
writer.close();
|
|
66
|
-
reject(err);
|
|
67
|
-
});
|
|
68
|
-
writer.on('close', () => {
|
|
69
|
-
if (!error) {
|
|
70
|
-
resolve(true);
|
|
71
|
-
console.log(chalk.blue(fileName + " 下载成功"));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* 获取文件名
|
|
80
|
-
* @param {fileUrl} 文件地址
|
|
81
|
-
* @returns 文件名
|
|
82
|
-
*/
|
|
83
|
-
function getFileName(fileUrl) {
|
|
84
|
-
const arr = fileUrl.split('/');
|
|
85
|
-
return arr[arr.length - 1];
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 更新多语言
|
|
90
|
-
* @returns 结果
|
|
91
|
-
*/
|
|
92
|
-
async function updatei18n(languageList) {
|
|
93
|
-
let promiseArr = []
|
|
94
|
-
languageList.forEach(item => {
|
|
95
|
-
promiseArr.push((async (item) => {
|
|
96
|
-
let fileName = getFileName(item);
|
|
97
|
-
await down2save(item, filepath, fileName)
|
|
98
|
-
})(item))
|
|
99
|
-
})
|
|
100
|
-
return Promise.all(promiseArr).then(function (result) {
|
|
101
|
-
console.log()
|
|
102
|
-
console.log(chalk.blue("所有语言下载完成"));
|
|
103
|
-
})
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* 是否更新多语言词库
|
|
108
|
-
* @returns 结果
|
|
109
|
-
*/
|
|
110
|
-
function askI18n() {
|
|
111
|
-
const prompt = [{
|
|
112
|
-
type: 'list',
|
|
113
|
-
message: '是否更新多语言词库:',
|
|
114
|
-
name: 'checked',
|
|
115
|
-
choices: [
|
|
116
|
-
{ name: "否", value: "0" },
|
|
117
|
-
{ name: "是", value: "1" },
|
|
118
|
-
],
|
|
119
|
-
}
|
|
120
|
-
];
|
|
121
|
-
return inquirer.prompt(prompt)
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
module.exports = {
|
|
126
|
-
updatei18n, askI18n
|
|
1
|
+
//文件下载
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const axios = require('axios');
|
|
5
|
+
const chalk = require("chalk")
|
|
6
|
+
const inquirer = require("inquirer")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
// 创建文件夹目录
|
|
11
|
+
const filepath = "src/utils/i18n";
|
|
12
|
+
let dirCache = {};
|
|
13
|
+
/**
|
|
14
|
+
* 创建文件夹
|
|
15
|
+
*/
|
|
16
|
+
function mkdir(filepath) {
|
|
17
|
+
const arr = filepath.split('/');
|
|
18
|
+
let dir = arr[0];
|
|
19
|
+
for (let i = 1; i <= arr.length; i++) {
|
|
20
|
+
if (!dirCache[dir] && !fs.existsSync(dir)) {
|
|
21
|
+
dirCache[dir] = true;
|
|
22
|
+
console.log("创建", dir);
|
|
23
|
+
fs.mkdirSync(dir);
|
|
24
|
+
} else {
|
|
25
|
+
// console.log("文件夹" + dir + "已存在");
|
|
26
|
+
}
|
|
27
|
+
dir = dir + '/' + arr[i];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
mkdir(filepath)
|
|
31
|
+
/**
|
|
32
|
+
* 检查多语言文件是否需要更新,如果需要更新,返回要更新的语种集合,否则返回空。
|
|
33
|
+
*/
|
|
34
|
+
function checkVersion() {
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 选择要更新的文件集合
|
|
39
|
+
*/
|
|
40
|
+
function selectUpdateFiles() {
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @param {fileUrl} 文件源地址
|
|
47
|
+
* @param {localPath} 保存的地址
|
|
48
|
+
* @param {fileName} 文件名
|
|
49
|
+
*/
|
|
50
|
+
function down2save(fileUrl, localPath, fileName) {
|
|
51
|
+
const mypath = path.resolve(localPath, fileName);
|
|
52
|
+
const writer = fs.createWriteStream(mypath);
|
|
53
|
+
console.log(fileName + " 开始下载");
|
|
54
|
+
return axios({
|
|
55
|
+
method: 'get',
|
|
56
|
+
url: fileUrl,
|
|
57
|
+
responseType: 'stream',
|
|
58
|
+
}).then(response => {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
response.data.pipe(writer);
|
|
61
|
+
let error = null;
|
|
62
|
+
writer.on('error', err => {
|
|
63
|
+
console.log(fileName + " 下载失败", err);
|
|
64
|
+
error = err;
|
|
65
|
+
writer.close();
|
|
66
|
+
reject(err);
|
|
67
|
+
});
|
|
68
|
+
writer.on('close', () => {
|
|
69
|
+
if (!error) {
|
|
70
|
+
resolve(true);
|
|
71
|
+
console.log(chalk.blue(fileName + " 下载成功"));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* 获取文件名
|
|
80
|
+
* @param {fileUrl} 文件地址
|
|
81
|
+
* @returns 文件名
|
|
82
|
+
*/
|
|
83
|
+
function getFileName(fileUrl) {
|
|
84
|
+
const arr = fileUrl.split('/');
|
|
85
|
+
return arr[arr.length - 1];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 更新多语言
|
|
90
|
+
* @returns 结果
|
|
91
|
+
*/
|
|
92
|
+
async function updatei18n(languageList) {
|
|
93
|
+
let promiseArr = []
|
|
94
|
+
languageList.forEach(item => {
|
|
95
|
+
promiseArr.push((async (item) => {
|
|
96
|
+
let fileName = getFileName(item);
|
|
97
|
+
await down2save(item, filepath, fileName)
|
|
98
|
+
})(item))
|
|
99
|
+
})
|
|
100
|
+
return Promise.all(promiseArr).then(function (result) {
|
|
101
|
+
console.log()
|
|
102
|
+
console.log(chalk.blue("所有语言下载完成"));
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* 是否更新多语言词库
|
|
108
|
+
* @returns 结果
|
|
109
|
+
*/
|
|
110
|
+
function askI18n() {
|
|
111
|
+
const prompt = [{
|
|
112
|
+
type: 'list',
|
|
113
|
+
message: '是否更新多语言词库:',
|
|
114
|
+
name: 'checked',
|
|
115
|
+
choices: [
|
|
116
|
+
{ name: "否", value: "0" },
|
|
117
|
+
{ name: "是", value: "1" },
|
|
118
|
+
],
|
|
119
|
+
}
|
|
120
|
+
];
|
|
121
|
+
return inquirer.prompt(prompt)
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
module.exports = {
|
|
126
|
+
updatei18n, askI18n
|
|
127
127
|
}
|