cloudcc-cli 0.9.8 → 0.9.9
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 +7 -0
- package/bin/build.js +1 -1
- package/bin/buildccbasesdk.js +1 -1
- package/bin/buildccsdk.js +1 -1
- package/bin/create.js +6 -6
- package/bin/publish.js +1 -1
- package/package.json +1 -1
- package/src/publishProject.js +31 -11
- package/utils/updatei18n.js +127 -0
package/README.md
CHANGED
package/bin/build.js
CHANGED
package/bin/buildccbasesdk.js
CHANGED
package/bin/buildccsdk.js
CHANGED
package/bin/create.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const Creator = require("../src/creatorTemProject.js");
|
|
4
|
-
|
|
5
|
-
const project = new Creator();
|
|
6
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const Creator = require("../src/creatorTemProject.js");
|
|
4
|
+
|
|
5
|
+
const project = new Creator();
|
|
6
|
+
|
|
7
7
|
project.init();
|
package/bin/publish.js
CHANGED
package/package.json
CHANGED
package/src/publishProject.js
CHANGED
|
@@ -18,6 +18,8 @@ const { jenkins } = require("../utils/trigger")
|
|
|
18
18
|
const { notifyFeishu } = require("../utils/notifyIM")
|
|
19
19
|
// 时间库
|
|
20
20
|
const dayjs = require("dayjs")
|
|
21
|
+
// 多语言更新脚本
|
|
22
|
+
const { updatei18n, askI18n } = require("../utils/updatei18n")
|
|
21
23
|
/**
|
|
22
24
|
* 项目打包发布脚本
|
|
23
25
|
*/
|
|
@@ -38,10 +40,12 @@ class Publish {
|
|
|
38
40
|
* 初始化
|
|
39
41
|
*/
|
|
40
42
|
async init() {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
// 检查cli版本,提示用户更新:false:不更新,true:更新
|
|
44
|
+
let update = await checkUpdate();
|
|
45
|
+
if (!update) {
|
|
46
|
+
// 1:版本发布信息,包含发布版本类型信息
|
|
43
47
|
let condition = {};
|
|
44
|
-
//
|
|
48
|
+
// 检查命令行是否输入了发布版本信息,如果没有包含,那么询问发布类型
|
|
45
49
|
if (this.args.get("type")) {
|
|
46
50
|
condition.type = this.args.get("type")
|
|
47
51
|
} else {
|
|
@@ -49,25 +53,39 @@ class Publish {
|
|
|
49
53
|
condition = await askType();
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
//
|
|
56
|
+
// 2:如果命令行包含了分支信息,那么git切换到命令行的分支
|
|
53
57
|
if (this.args.get("branch")) {
|
|
54
58
|
exec(`git checkout ${this.args.get("branch")}`);
|
|
55
59
|
console.log(chalk.green("切换分支:" + this.args.get("branch")))
|
|
56
60
|
console.log()
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
//
|
|
63
|
+
// 3:获取新的发布版本号
|
|
60
64
|
let version = getNewVersionName([condition.type])
|
|
61
65
|
console.log();
|
|
62
66
|
console.log(chalk.green('待发布版本:' + version));
|
|
63
67
|
console.log();
|
|
64
68
|
|
|
65
|
-
//
|
|
69
|
+
// 4:如果存在多语言配置,则更新多语言
|
|
70
|
+
if (projectConfig.config && projectConfig.config["language-config"]) {
|
|
71
|
+
// 询问是否更新多语言
|
|
72
|
+
let i18n = await askI18n()
|
|
73
|
+
if (i18n.checked === '1') {
|
|
74
|
+
let laguage = projectConfig.config["language-config"]
|
|
75
|
+
// 执行更新多语言文件
|
|
76
|
+
await updatei18n(laguage)
|
|
77
|
+
console.log(chalk.blue("多语言文件更新完毕,准备开始打包"));
|
|
78
|
+
console.log();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// 5:开始打包
|
|
66
83
|
if (await this.build()) {
|
|
67
|
-
//
|
|
84
|
+
// 6:将readme生成为html,并复制到dist中
|
|
68
85
|
let outPath = "dist"
|
|
69
|
-
|
|
70
|
-
|
|
86
|
+
// 读取配置,是否改变了输出路径
|
|
87
|
+
if (projectConfig.config && projectConfig.config["doc-path"]) {
|
|
88
|
+
outPath = projectConfig.config["doc-path"];
|
|
71
89
|
}
|
|
72
90
|
// lightning的Release禁止生成Readme文档
|
|
73
91
|
if (!(Object.is("CloudCC", projectConfig.name) && Object.is("Release", condition.type))) {
|
|
@@ -78,14 +96,15 @@ class Publish {
|
|
|
78
96
|
console.log(chalk.red("README写入异常:" + error))
|
|
79
97
|
}
|
|
80
98
|
}
|
|
99
|
+
|
|
81
100
|
try {
|
|
82
|
-
//
|
|
101
|
+
// 7:写入版本信息
|
|
83
102
|
this.writeVersion(version);
|
|
84
103
|
} catch (error) {
|
|
85
104
|
console.log(chalk.red("版本信息写入异常:" + error))
|
|
86
105
|
}
|
|
87
106
|
|
|
88
|
-
//
|
|
107
|
+
// 8:发布代码并设置tags,触发发布,飞书提醒
|
|
89
108
|
if (pushCodeAndTags([condition.type])) {
|
|
90
109
|
if (projectConfig && projectConfig.config) {
|
|
91
110
|
jenkins(projectConfig.config["jenkins-" + condition.type])
|
|
@@ -96,6 +115,7 @@ class Publish {
|
|
|
96
115
|
console.log();
|
|
97
116
|
}
|
|
98
117
|
}
|
|
118
|
+
|
|
99
119
|
}
|
|
100
120
|
}
|
|
101
121
|
/**
|
|
@@ -0,0 +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
|
|
127
|
+
}
|