cloudcc-cli 1.5.6 → 1.5.8
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 +18 -0
- package/bin/cc.js +50 -0
- package/bin/plugin.js +7 -0
- package/bin/project.js +7 -0
- package/cloudcc-cli/accessToken +1 -0
- package/package.json +5 -12
- package/src/classes/create.js +43 -0
- package/src/classes/index.js +8 -0
- package/src/classes/publish.js +47 -0
- package/src/plugin/create.js +80 -0
- package/src/plugin/create1.js +67 -0
- package/src/plugin/index.js +8 -0
- package/src/{builderPlugin.js → plugin/publish.js} +2 -3
- package/src/plugin/publish1.js +293 -0
- package/src/{creatorTemProject.js → project/create.js} +14 -18
- package/src/project/create1.js +95 -0
- package/src/project/index.js +7 -0
- package/src/timer/create.js +29 -0
- package/src/timer/index.js +8 -0
- package/src/timer/publish.js +47 -0
- package/src/triggers/create.js +35 -0
- package/src/triggers/index.js +8 -0
- package/src/triggers/publish.js +51 -0
- package/template/demojava +15 -0
- package/template/index.js +19 -7
- package/template/javaconfigjson +3 -0
- package/utils/checkVersion.js +1 -1
- package/utils/http.js +24 -1
- package/utils/utils.js +44 -0
- package/bin/build.js +0 -7
- package/bin/buildccbasesdk.js +0 -7
- package/bin/buildccsdk.js +0 -7
- package/bin/buildtag.js +0 -7
- package/bin/create.js +0 -7
- package/bin/createPlugin.js +0 -7
- package/bin/publish.js +0 -7
- package/bin/publishBuild.js +0 -7
- package/bin/publishh5.js +0 -7
- package/bin/publishh5Build.js +0 -7
- package/src/buildTag.js +0 -75
- package/src/builderBaseSDK.js +0 -90
- package/src/builderCreate.js +0 -84
- package/src/builderSDK.js +0 -162
- package/src/publishProject.js +0 -221
- package/src/publishProjectBuild.js +0 -223
- package/src/publishProjectH5.js +0 -218
- package/src/publishProjectH5Build.js +0 -224
- package/utils/askTool.js +0 -96
- package/utils/changeVersion copy.js +0 -75
- package/utils/changeVersion.js +0 -24
- package/utils/deploy.js +0 -9
- package/utils/encryption.js +0 -20
- package/utils/github-markdown.min.css +0 -2
- package/utils/md2html.js +0 -89
- package/utils/notifyIM.js +0 -87
- package/utils/pushCode.js +0 -202
- package/utils/trigger.js +0 -23
- package/utils/updatei18n.js +0 -127
- package/utils/writeVersion.js +0 -56
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
const { execSync, exec } = require('child_process');
|
|
2
|
-
const chalk = require("chalk")
|
|
3
|
-
// 文件编辑对象
|
|
4
|
-
const fs = require("fs")
|
|
5
|
-
// 配置信息
|
|
6
|
-
const projectConfig = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
7
|
-
// 网页转换器
|
|
8
|
-
const { change } = require("../utils/md2html")
|
|
9
|
-
// 检查版本更新
|
|
10
|
-
const { checkUpdate } = require("../utils/checkVersion")
|
|
11
|
-
// 控制台交互
|
|
12
|
-
const { askType, askTypeOther, askBuildType } = require("../utils/askTool")
|
|
13
|
-
// 提交代码,设置Tag
|
|
14
|
-
const { getNewVersionName, pushCodeAndTags } = require("../utils/pushCode")
|
|
15
|
-
// 触发构建器
|
|
16
|
-
const { yunxiao } = require("../utils/trigger")
|
|
17
|
-
// 通知飞书
|
|
18
|
-
const { notifyDingDing } = require("../utils/notifyIM")
|
|
19
|
-
// 时间库
|
|
20
|
-
const dayjs = require("dayjs")
|
|
21
|
-
// 文件夹操作工具
|
|
22
|
-
const fsex = require('fs-extra')
|
|
23
|
-
/**
|
|
24
|
-
* H5项目打包发布脚本
|
|
25
|
-
*/
|
|
26
|
-
class Publish {
|
|
27
|
-
constructor() {
|
|
28
|
-
/**
|
|
29
|
-
* 控制台参数:key=value
|
|
30
|
-
* type:发布的tag
|
|
31
|
-
* branch:使用的分支
|
|
32
|
-
* language:是否更新多语言,'1'更新,'0'不更新
|
|
33
|
-
* buildType:打包方式,online-云打包,local-本地打包
|
|
34
|
-
* user:打包用户
|
|
35
|
-
* update:代码不同步的时候,是否强制更新代码
|
|
36
|
-
*/
|
|
37
|
-
this.args = new Map();
|
|
38
|
-
this.arguments = process.argv.splice(2).map((item) => {
|
|
39
|
-
let arr = item.split("=");
|
|
40
|
-
this.args.set(arr[0], arr[1]);
|
|
41
|
-
});
|
|
42
|
-
this.user = this.args.get("user") || execSync("git config user.name").toString("utf8").trim();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* 初始化
|
|
46
|
-
*/
|
|
47
|
-
async init() {
|
|
48
|
-
// 检查cli版本,提示用户更新:false:不更新,true:更新
|
|
49
|
-
let update = await checkUpdate();
|
|
50
|
-
if (!update) {
|
|
51
|
-
// 1:版本发布信息,包含发布版本类型信息
|
|
52
|
-
let condition = {};
|
|
53
|
-
// 2:检查命令行是否输入了发布版本信息,如果没有包含,那么询问发布类型
|
|
54
|
-
if (this.args.get("type")) {
|
|
55
|
-
condition.type = this.args.get("type")
|
|
56
|
-
} else {
|
|
57
|
-
// 询问发布类型
|
|
58
|
-
condition = await askType();
|
|
59
|
-
if ("other" == condition.type) {
|
|
60
|
-
condition = await askTypeOther();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// 3:获取新的发布版本号
|
|
64
|
-
let version = getNewVersionName([condition.type])
|
|
65
|
-
console.log();
|
|
66
|
-
console.log(chalk.green('待发布版本:' + version));
|
|
67
|
-
console.log();
|
|
68
|
-
// 4:开始打包
|
|
69
|
-
this.build(condition, version)
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* 编译代码
|
|
74
|
-
* @param {发布类型} types:Dev,uat,Release,GA,RC
|
|
75
|
-
* @param {发布版本} versions:V12.0.0
|
|
76
|
-
* @returns
|
|
77
|
-
*/
|
|
78
|
-
build(condition, version) {
|
|
79
|
-
// 删除多余文件夹
|
|
80
|
-
fsex.removeSync("./build/dist")
|
|
81
|
-
console.log(chalk.green('开始编译,请稍后...'));
|
|
82
|
-
console.log();
|
|
83
|
-
let that = this;
|
|
84
|
-
// 当时mac系统时使用mac路径命令,当时window系统时,使用window命令路径
|
|
85
|
-
let path = "cli.exe"
|
|
86
|
-
if (process.platform === 'darwin') {
|
|
87
|
-
path = "/Applications/HBuilderX.app/Contents/MacOS/cli"
|
|
88
|
-
}
|
|
89
|
-
exec(`${path} publish --platform h5 --project ` + projectConfig.name, (error, stdout, stderr) => {
|
|
90
|
-
if (error) {
|
|
91
|
-
console.log('编译失败:', error);
|
|
92
|
-
console.log(chalk.red('编译失败:' + stdout));
|
|
93
|
-
} else {
|
|
94
|
-
console.log(chalk.green('编译成功!'));
|
|
95
|
-
console.log();
|
|
96
|
-
that.buildSucess(condition, version);
|
|
97
|
-
}
|
|
98
|
-
})
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* 编译成功
|
|
102
|
-
*/
|
|
103
|
-
buildSucess(condition, version) {
|
|
104
|
-
// 更新日志文档添加发布日期
|
|
105
|
-
// 获得分支信息
|
|
106
|
-
let branch = execSync('git branch --show-current');
|
|
107
|
-
branch = branch.toString("utf8").trim();
|
|
108
|
-
const datas = fs.readFileSync("README.md", 'utf-8').split("\n")
|
|
109
|
-
let data = ""
|
|
110
|
-
datas.map((item, index) => {
|
|
111
|
-
if (0 == index) {
|
|
112
|
-
data = data + `#### 发布版本:${version}` + "\n"
|
|
113
|
-
data = data + `#### 发布时间:${dayjs().format('YYYY-MM-DD HH:mm:ss')}` + "\n"
|
|
114
|
-
data = data + `#### 发布人员:${this.user}` + "\n"
|
|
115
|
-
data = data + `#### 发布分支:${branch}` + "\n"
|
|
116
|
-
data = data + `#### 发布标签:${condition.type}` + "\n"
|
|
117
|
-
if (!item.startsWith("#### 发布版本")) {
|
|
118
|
-
data = data + item + "\n"
|
|
119
|
-
}
|
|
120
|
-
} else if (1 == index) {
|
|
121
|
-
if (!item.startsWith("#### 发布时间")) {
|
|
122
|
-
data = data + item + "\n"
|
|
123
|
-
}
|
|
124
|
-
} else if (2 == index) {
|
|
125
|
-
if (!item.startsWith("#### 发布人员")) {
|
|
126
|
-
data = data + item + "\n"
|
|
127
|
-
}
|
|
128
|
-
} else if (3 == index) {
|
|
129
|
-
if (!item.startsWith("#### 发布分支")) {
|
|
130
|
-
data = data + item + "\n"
|
|
131
|
-
}
|
|
132
|
-
} else if (4 == index) {
|
|
133
|
-
if (!item.startsWith("#### 发布标签")) {
|
|
134
|
-
data = data + item + "\n"
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
data = data + item + "\n"
|
|
138
|
-
}
|
|
139
|
-
})
|
|
140
|
-
fs.writeFileSync("README.md", data)
|
|
141
|
-
// 5:将readme生成为html,并复制到dist中
|
|
142
|
-
let outPath = "dist"
|
|
143
|
-
// 读取配置,是否改变了输出路径
|
|
144
|
-
if (projectConfig.config && projectConfig.config["doc-path"]) {
|
|
145
|
-
outPath = projectConfig.config["doc-path"];
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
// 设置readme文件位置
|
|
149
|
-
change("README", outPath);
|
|
150
|
-
} catch (error) {
|
|
151
|
-
console.log(chalk.red("README写入异常:" + error))
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
try {
|
|
155
|
-
// 6:写入版本信息
|
|
156
|
-
this.writeVersion(version, outPath, condition.type, branch);
|
|
157
|
-
} catch (error) {
|
|
158
|
-
console.log(chalk.red("版本信息写入异常:" + error))
|
|
159
|
-
}
|
|
160
|
-
// 移动打包文件
|
|
161
|
-
fsex.copySync('./unpackage/dist/build/h5/', './build/dist');
|
|
162
|
-
// 删除多余文件夹
|
|
163
|
-
fsex.removeSync("unpackage")
|
|
164
|
-
|
|
165
|
-
// 7:发布代码并设置tags,触发发布,飞书提醒
|
|
166
|
-
if (pushCodeAndTags(version, [condition.type], this.args.get("update"), "build")) {
|
|
167
|
-
if (projectConfig && projectConfig.config) {
|
|
168
|
-
yunxiao(projectConfig.config["jenkins-" + condition.type])
|
|
169
|
-
}
|
|
170
|
-
notifyDingDing(condition.type, version, projectConfig, this.user)
|
|
171
|
-
console.log();
|
|
172
|
-
console.log(chalk.green('发布完成'));
|
|
173
|
-
console.log();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* 将版本信息写入文件
|
|
178
|
-
* @param {版本信息} version
|
|
179
|
-
* @param {输出路径} outPath
|
|
180
|
-
*/
|
|
181
|
-
writeVersion(version, outPath, type, branch) {
|
|
182
|
-
try {
|
|
183
|
-
// 获得分支信息
|
|
184
|
-
let versionInfo =
|
|
185
|
-
`
|
|
186
|
-
<!DOCTYPE html>
|
|
187
|
-
<html lang="en">
|
|
188
|
-
|
|
189
|
-
<head>
|
|
190
|
-
<meta charset="UTF-8">
|
|
191
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
192
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
193
|
-
<title>版本信息</title>
|
|
194
|
-
</head>
|
|
195
|
-
|
|
196
|
-
<body>
|
|
197
|
-
<div style="font-size: 20px">
|
|
198
|
-
<div>${projectConfig.name}</div>
|
|
199
|
-
<div style="margin-left:48px">
|
|
200
|
-
<div>版本:${version}</div>
|
|
201
|
-
<div>时间:${dayjs().format('YYYY-MM-DD HH:mm:ss')}</div>
|
|
202
|
-
<div>人员:${this.user}</div>
|
|
203
|
-
<div>分支:${branch}</div>
|
|
204
|
-
<div>标签:${type}</div>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
</body>
|
|
208
|
-
|
|
209
|
-
</html>
|
|
210
|
-
`
|
|
211
|
-
fs.writeFileSync(outPath + "/version.html", versionInfo, 'utf-8');
|
|
212
|
-
|
|
213
|
-
let versionInfoJson =
|
|
214
|
-
`{"projectName":"${projectConfig.name}","版本":"${version}","时间":"${dayjs().format('YYYY-MM-DD HH:mm:ss')}","人员":"${user}","分支":"${branch}","标签":"${type}"}`
|
|
215
|
-
fs.writeFileSync(outPath + "/version.json", versionInfoJson, 'utf-8');
|
|
216
|
-
|
|
217
|
-
return true
|
|
218
|
-
} catch (error) {
|
|
219
|
-
return false
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
module.exports = Publish;
|
package/utils/askTool.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
// 同步执行exe命令
|
|
2
|
-
const exec = require('child_process').execSync;
|
|
3
|
-
// 文件管理器
|
|
4
|
-
const fs = require('fs');
|
|
5
|
-
// 配置信息
|
|
6
|
-
const projectConfig = JSON.parse(fs.readFileSync('package.json', 'utf8'))
|
|
7
|
-
// 常用控制台交互
|
|
8
|
-
const inquirer = require("inquirer")
|
|
9
|
-
|
|
10
|
-
let choices = [
|
|
11
|
-
{ name: "客户环境-Release", value: "Release" },
|
|
12
|
-
{ name: "客户环境-Release-99", value: "Release-99" },
|
|
13
|
-
{ name: "公司环境-GA", value: "GA" },
|
|
14
|
-
{ name: "预生产环境-RC", value: "RC" },
|
|
15
|
-
{ name: "预生产环境-RC-99", value: "RC-99" },
|
|
16
|
-
{ name: "uat环境-Beta", value: "Beta" },
|
|
17
|
-
{ name: "研发联调环境-Dev", value: "Dev" }
|
|
18
|
-
]
|
|
19
|
-
|
|
20
|
-
module.exports = {
|
|
21
|
-
/**
|
|
22
|
-
* 询问要创建的tag名称
|
|
23
|
-
* @returns 结果
|
|
24
|
-
*/
|
|
25
|
-
askTag: (message) => {
|
|
26
|
-
const prompt = [{
|
|
27
|
-
type: 'list',
|
|
28
|
-
message,
|
|
29
|
-
name: 'type',
|
|
30
|
-
choices: choices,
|
|
31
|
-
}
|
|
32
|
-
];
|
|
33
|
-
return inquirer.prompt(prompt)
|
|
34
|
-
},
|
|
35
|
-
/**
|
|
36
|
-
* 请求版本信息
|
|
37
|
-
* @returns 结果
|
|
38
|
-
*/
|
|
39
|
-
askType: () => {
|
|
40
|
-
// 如果存在配置,那么从配置中读取
|
|
41
|
-
if (projectConfig && projectConfig.config) {
|
|
42
|
-
let branch = exec('git branch --show-current');
|
|
43
|
-
branch = branch.toString("utf8").trim();
|
|
44
|
-
choices = projectConfig.config["branch-" + branch]
|
|
45
|
-
if (choices) {
|
|
46
|
-
choices.push({ name: "其他", value: "other" })
|
|
47
|
-
} else {
|
|
48
|
-
choices = projectConfig.config["branch-other"]
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const prompt = [{
|
|
52
|
-
type: 'list',
|
|
53
|
-
message: '请选择发布版本:',
|
|
54
|
-
name: 'type',
|
|
55
|
-
choices: choices,
|
|
56
|
-
}
|
|
57
|
-
];
|
|
58
|
-
return inquirer.prompt(prompt)
|
|
59
|
-
},
|
|
60
|
-
/**
|
|
61
|
-
* 请求版本信息
|
|
62
|
-
* @returns 结果
|
|
63
|
-
*/
|
|
64
|
-
askTypeOther: () => {
|
|
65
|
-
// 如果存在配置,那么从配置中读取
|
|
66
|
-
if (projectConfig && projectConfig.config) {
|
|
67
|
-
choices = projectConfig.config["branch-other"]
|
|
68
|
-
}
|
|
69
|
-
const prompt = [{
|
|
70
|
-
type: 'list',
|
|
71
|
-
message: '请选择发布版本:',
|
|
72
|
-
name: 'type',
|
|
73
|
-
choices: choices,
|
|
74
|
-
}
|
|
75
|
-
];
|
|
76
|
-
return inquirer.prompt(prompt)
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* 询问打包方式:本地打包,云打包
|
|
81
|
-
* @returns 结果
|
|
82
|
-
*/
|
|
83
|
-
askBuildType: () => {
|
|
84
|
-
const prompt = [{
|
|
85
|
-
type: 'list',
|
|
86
|
-
message: '请选择打包方式:',
|
|
87
|
-
name: 'buildType',
|
|
88
|
-
choices: [
|
|
89
|
-
{ name: "云打包", value: "online" },
|
|
90
|
-
{ name: "本地打包", value: "local" },
|
|
91
|
-
],
|
|
92
|
-
}
|
|
93
|
-
];
|
|
94
|
-
return inquirer.prompt(prompt)
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
function change(ori) {
|
|
3
|
-
// let ori = "12.0.9";
|
|
4
|
-
let split = ori.split(".");
|
|
5
|
-
let ret = "";
|
|
6
|
-
if (split.length == 4) {
|
|
7
|
-
// 12.1.0.0 形式的
|
|
8
|
-
for (let i = 0; i < split.length; i++) {
|
|
9
|
-
let last = split[3];
|
|
10
|
-
if (last < 9999) {
|
|
11
|
-
last++;
|
|
12
|
-
ret = split[0] + "." + split[1] + "." + split[2] + "." + last;
|
|
13
|
-
break;
|
|
14
|
-
} else {
|
|
15
|
-
let second = split[2];
|
|
16
|
-
if (second < 9) {
|
|
17
|
-
second++;
|
|
18
|
-
ret = split[0] + "." + split[1] + "." + second + ".0";
|
|
19
|
-
break;
|
|
20
|
-
} else {
|
|
21
|
-
let third = split[1];
|
|
22
|
-
if (third < 9) {
|
|
23
|
-
third++;
|
|
24
|
-
ret = split[0] + "." + third + ".0" + ".0";
|
|
25
|
-
break;
|
|
26
|
-
} else {
|
|
27
|
-
let forth = split[0];
|
|
28
|
-
forth++;
|
|
29
|
-
ret = forth + ".0.0.0";
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return ret;
|
|
36
|
-
} else {
|
|
37
|
-
// 12.0.9 形式的
|
|
38
|
-
for (let i = 0; i < split.length; i++) {
|
|
39
|
-
let last = split[2];
|
|
40
|
-
if (last < 9) {
|
|
41
|
-
last++;
|
|
42
|
-
ret = split[0] + "." + split[1] + "." + last;
|
|
43
|
-
break;
|
|
44
|
-
} else {
|
|
45
|
-
let second = split[1];
|
|
46
|
-
if (second < 9) {
|
|
47
|
-
second++;
|
|
48
|
-
ret = split[0] + "." + second + ".0";
|
|
49
|
-
break;
|
|
50
|
-
} else {
|
|
51
|
-
let third = split[0];
|
|
52
|
-
third++;
|
|
53
|
-
ret = third + ".0.0";
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return ret;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
module.exports = { change }
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* 修改版本号
|
|
67
|
-
* @param {ori} 版本号
|
|
68
|
-
* @param {type} 类型:Dev,uat,GA,Release
|
|
69
|
-
* @returns 新的版本号
|
|
70
|
-
*/
|
|
71
|
-
// 需要更新第二位
|
|
72
|
-
const updateSecond = ["Release"];
|
|
73
|
-
|
|
74
|
-
// 需要更新第三位
|
|
75
|
-
const updateLast = ["Dev", "uat", "GA", "RC"];
|
package/utils/changeVersion.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 修改版本号
|
|
3
|
-
* @param {ori} 版本号:12.0.123
|
|
4
|
-
* @param {type} 类型:Dev,uat,GA,Release
|
|
5
|
-
* @returns 新的版本号
|
|
6
|
-
*/
|
|
7
|
-
// 需要更新第二位
|
|
8
|
-
const updateSecond = ["Stable"];
|
|
9
|
-
|
|
10
|
-
function change(version, type) {
|
|
11
|
-
if (version) {
|
|
12
|
-
let split = version.split(".");
|
|
13
|
-
let ret = version;
|
|
14
|
-
if (split && split.length === 3) {
|
|
15
|
-
if (updateSecond.includes(type)) {
|
|
16
|
-
ret = split[0] + "." + (++split[1]) + "." + split[2];
|
|
17
|
-
} else {
|
|
18
|
-
ret = split[0] + "." + split[1] + "." + (++split[2]);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return ret;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
module.exports = { change }
|
package/utils/deploy.js
DELETED
package/utils/encryption.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
const CryptoJS = require("crypto-js");
|
|
2
|
-
|
|
3
|
-
const keyCode = "646576636f6e736f6c652d7376633132"
|
|
4
|
-
module.exports = {
|
|
5
|
-
en(word, keyStr = keyCode) {
|
|
6
|
-
let enc = CryptoJS.AES.encrypt(word, CryptoJS.enc.Hex.parse(keyStr), {
|
|
7
|
-
mode: CryptoJS.mode.ECB,
|
|
8
|
-
padding: CryptoJS.pad.Pkcs7
|
|
9
|
-
})
|
|
10
|
-
return enc.ciphertext.toString()
|
|
11
|
-
},
|
|
12
|
-
|
|
13
|
-
de(word, keyStr = keyCode) {
|
|
14
|
-
let dec = CryptoJS.AES.decrypt(CryptoJS.format.Hex.parse(word), CryptoJS.enc.Hex.parse(keyStr), {
|
|
15
|
-
mode: CryptoJS.mode.ECB,
|
|
16
|
-
padding: CryptoJS.pad.Pkcs7
|
|
17
|
-
})
|
|
18
|
-
return CryptoJS.enc.Utf8.stringify(dec)
|
|
19
|
-
}
|
|
20
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:octicons-link;src:url(data:font/woff;charset=utf-8;base64,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) format('woff')}.markdown-body .octicon{display:inline-block;fill:currentColor;vertical-align:text-bottom}.markdown-body .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.markdown-body .anchor:focus{outline:0}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#1b1f23;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#24292e;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body .pl-c{color:#6a737d}.markdown-body .pl-c1,.markdown-body .pl-s .pl-v{color:#005cc5}.markdown-body .pl-e,.markdown-body .pl-en{color:#6f42c1}.markdown-body .pl-s .pl-s1,.markdown-body .pl-smi{color:#24292e}.markdown-body .pl-ent{color:#22863a}.markdown-body .pl-k{color:#d73a49}.markdown-body .pl-pds,.markdown-body .pl-s,.markdown-body .pl-s .pl-pse .pl-s1,.markdown-body .pl-sr,.markdown-body .pl-sr .pl-cce,.markdown-body .pl-sr .pl-sra,.markdown-body .pl-sr .pl-sre{color:#032f62}.markdown-body .pl-smw,.markdown-body .pl-v{color:#e36209}.markdown-body .pl-bu{color:#b31d28}.markdown-body .pl-ii{background-color:#b31d28;color:#fafbfc}.markdown-body .pl-c2{background-color:#d73a49;color:#fafbfc}.markdown-body .pl-c2:before{content:"^M"}.markdown-body .pl-sr .pl-cce{color:#22863a;font-weight:700}.markdown-body .pl-ml{color:#735c0f}.markdown-body .pl-mh,.markdown-body .pl-mh .pl-en,.markdown-body .pl-ms{color:#005cc5;font-weight:700}.markdown-body .pl-mi{color:#24292e;font-style:italic}.markdown-body .pl-mb{color:#24292e;font-weight:700}.markdown-body .pl-md{background-color:#ffeef0;color:#b31d28}.markdown-body .pl-mi1{background-color:#f0fff4;color:#22863a}.markdown-body .pl-mc{background-color:#ffebda;color:#e36209}.markdown-body .pl-mi2{background-color:#005cc5;color:#f6f8fa}.markdown-body .pl-mdr{color:#6f42c1;font-weight:700}.markdown-body .pl-ba{color:#586069}.markdown-body .pl-sg{color:#959da5}.markdown-body .pl-corl{color:#032f62;text-decoration:underline}.markdown-body details{display:block}.markdown-body summary{display:list-item}.markdown-body a{background-color:transparent}.markdown-body a:active,.markdown-body a:hover{outline-width:0}.markdown-body strong{font-weight:inherit;font-weight:bolder}.markdown-body h1{font-size:2em;margin:.67em 0}.markdown-body img{border-style:none}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:monospace,monospace;font-size:1em}.markdown-body hr{box-sizing:content-box;height:0;overflow:visible}.markdown-body input{font:inherit;margin:0}.markdown-body input{overflow:visible}.markdown-body [type=checkbox]{box-sizing:border-box;padding:0}.markdown-body *{box-sizing:border-box}.markdown-body input{font-family:inherit;font-size:inherit;line-height:inherit}.markdown-body a{color:#0366d6;text-decoration:none}.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:600}.markdown-body hr{background:0 0;border:0;border-bottom:1px solid #dfe2e5;height:0;margin:15px 0;overflow:hidden}.markdown-body hr:before{content:"";display:table}.markdown-body hr:after{clear:both;content:"";display:table}.markdown-body table{border-collapse:collapse;border-spacing:0}.markdown-body td,.markdown-body th{padding:0}.markdown-body details summary{cursor:pointer}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-bottom:0;margin-top:0}.markdown-body h1{font-size:32px}.markdown-body h1,.markdown-body h2{font-weight:600}.markdown-body h2{font-size:24px}.markdown-body h3{font-size:20px}.markdown-body h3,.markdown-body h4{font-weight:600}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:14px}.markdown-body h5,.markdown-body h6{font-weight:600}.markdown-body h6{font-size:12px}.markdown-body p{margin-bottom:10px;margin-top:0}.markdown-body blockquote{margin:0}.markdown-body ol,.markdown-body ul{margin-bottom:0;margin-top:0;padding-left:0}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body dd{margin-left:0}.markdown-body code,.markdown-body pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px}.markdown-body pre{margin-bottom:0;margin-top:0}.markdown-body input::-webkit-inner-spin-button,.markdown-body input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.markdown-body .border{border:1px solid #e1e4e8!important}.markdown-body .border-0{border:0!important}.markdown-body .border-bottom{border-bottom:1px solid #e1e4e8!important}.markdown-body .rounded-1{border-radius:3px!important}.markdown-body .bg-white{background-color:#fff!important}.markdown-body .bg-gray-light{background-color:#fafbfc!important}.markdown-body .text-gray-light{color:#6a737d!important}.markdown-body .mb-0{margin-bottom:0!important}.markdown-body .my-2{margin-bottom:8px!important;margin-top:8px!important}.markdown-body .pl-0{padding-left:0!important}.markdown-body .py-0{padding-bottom:0!important;padding-top:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .py-2{padding-bottom:8px!important;padding-top:8px!important}.markdown-body .pl-3,.markdown-body .px-3{padding-left:16px!important}.markdown-body .px-3{padding-right:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .f6{font-size:12px!important}.markdown-body .lh-condensed{line-height:1.25!important}.markdown-body .text-bold{font-weight:600!important}.markdown-body:before{content:"";display:table}.markdown-body:after{clear:both;content:"";display:table}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-bottom:16px;margin-top:0}.markdown-body hr{background-color:#e1e4e8;border:0;height:.25em;margin:24px 0;padding:0}.markdown-body blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{border-bottom:1px solid #eaecef;padding-bottom:.3em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{color:#6a737d;font-size:.85em}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-bottom:0;margin-top:0}.markdown-body li{word-wrap:break-all}.markdown-body li>p{margin-top:16px}.markdown-body li+li{margin-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.markdown-body dl dd{margin-bottom:16px;padding:0 16px}.markdown-body table{display:block;overflow:auto;width:100%}.markdown-body table th{font-weight:600}.markdown-body table td,.markdown-body table th{border:1px solid #dfe2e5;padding:6px 13px}.markdown-body table tr{background-color:#fff;border-top:1px solid #c6cbd1}.markdown-body table tr:nth-child(2n){background-color:#f6f8fa}.markdown-body img{background-color:#fff;box-sizing:content-box;max-width:100%}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body code{background-color:rgba(27,31,35,.05);border-radius:3px;font-size:85%;margin:0;padding:.2em .4em}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{background:0 0;border:0;font-size:100%;margin:0;padding:0;white-space:pre;word-break:normal}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{background-color:#f6f8fa;border-radius:3px;font-size:85%;line-height:1.45;overflow:auto;padding:16px}.markdown-body pre code{background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0;word-wrap:normal}.markdown-body .commit-tease-sha{color:#444d56;display:inline-block;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:90%}.markdown-body .blob-wrapper{border-bottom-left-radius:3px;border-bottom-right-radius:3px;overflow-x:auto;overflow-y:hidden}.markdown-body .blob-wrapper-embedded{max-height:240px;overflow-y:auto}.markdown-body .blob-num{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;color:rgba(27,31,35,.3);cursor:pointer;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;min-width:50px;padding-left:10px;padding-right:10px;text-align:right;user-select:none;vertical-align:top;white-space:nowrap;width:1%}.markdown-body .blob-num:hover{color:rgba(27,31,35,.6)}.markdown-body .blob-num:before{content:attr(data-line-number)}.markdown-body .blob-code{line-height:20px;padding-left:10px;padding-right:10px;position:relative;vertical-align:top}.markdown-body .blob-code-inner{color:#24292e;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;overflow:visible;white-space:pre;word-wrap:normal}.markdown-body .pl-token.active,.markdown-body .pl-token:hover{background:#ffea7f;cursor:pointer}.markdown-body kbd{background-color:#fafbfc;border:1px solid #d1d5da;border-bottom-color:#c6cbd1;border-radius:3px;box-shadow:inset 0 -1px 0 #c6cbd1;color:#444d56;display:inline-block;font:11px SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.markdown-body :checked+.radio-label{border-color:#0366d6;position:relative;z-index:1}.markdown-body .tab-size[data-tab-size="1"]{-moz-tab-size:1;tab-size:1}.markdown-body .tab-size[data-tab-size="2"]{-moz-tab-size:2;tab-size:2}.markdown-body .tab-size[data-tab-size="3"]{-moz-tab-size:3;tab-size:3}.markdown-body .tab-size[data-tab-size="4"]{-moz-tab-size:4;tab-size:4}.markdown-body .tab-size[data-tab-size="5"]{-moz-tab-size:5;tab-size:5}.markdown-body .tab-size[data-tab-size="6"]{-moz-tab-size:6;tab-size:6}.markdown-body .tab-size[data-tab-size="7"]{-moz-tab-size:7;tab-size:7}.markdown-body .tab-size[data-tab-size="8"]{-moz-tab-size:8;tab-size:8}.markdown-body .tab-size[data-tab-size="9"]{-moz-tab-size:9;tab-size:9}.markdown-body .tab-size[data-tab-size="10"]{-moz-tab-size:10;tab-size:10}.markdown-body .tab-size[data-tab-size="11"]{-moz-tab-size:11;tab-size:11}.markdown-body .tab-size[data-tab-size="12"]{-moz-tab-size:12;tab-size:12}.markdown-body .task-list-item{list-style-type:none}.markdown-body .task-list-item+.task-list-item{margin-top:3px}.markdown-body .task-list-item input{margin:0 .2em .25em -1.6em;vertical-align:middle}.markdown-body hr{border-bottom-color:#eee}.markdown-body .pl-0{padding-left:0!important}.markdown-body .pl-1{padding-left:4px!important}.markdown-body .pl-2{padding-left:8px!important}.markdown-body .pl-3{padding-left:16px!important}.markdown-body .pl-4{padding-left:24px!important}.markdown-body .pl-5{padding-left:32px!important}.markdown-body .pl-6{padding-left:40px!important}.markdown-body .pl-7{padding-left:48px!important}.markdown-body .pl-8{padding-left:64px!important}.markdown-body .pl-9{padding-left:80px!important}.markdown-body .pl-10{padding-left:96px!important}.markdown-body .pl-11{padding-left:112px!important}.markdown-body .pl-12{padding-left:128px!important}
|
|
2
|
-
/*# sourceMappingURL=github-markdown.min.css.map */
|
package/utils/md2html.js
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 将md编译为html,并复制到dist/plu
|
|
3
|
-
*/
|
|
4
|
-
const fs = require('fs'); //文件模块
|
|
5
|
-
const path = require('path'); //路径模块
|
|
6
|
-
const marked = require('marked'); //md转html模块
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 检测文件改动
|
|
10
|
-
*/
|
|
11
|
-
function watchFile(target) {
|
|
12
|
-
fs.watchFile(target, {
|
|
13
|
-
persistent: true, //是否持续监听
|
|
14
|
-
interval: 200, //刷新间隔
|
|
15
|
-
}, (curr, prev) => {
|
|
16
|
-
if (curr.mtime == prev.mtime) { //比较修改时间,判断保存后内容是否真的发生了变化
|
|
17
|
-
return false;
|
|
18
|
-
}
|
|
19
|
-
change()
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* 转换
|
|
24
|
-
* @param {target} 编译文件名称
|
|
25
|
-
* @param {outPath} 保存路径
|
|
26
|
-
*/
|
|
27
|
-
function change(target = "README", outPath = "dist", outFile = "README") {
|
|
28
|
-
//读取文件
|
|
29
|
-
const data = fs.readFileSync(target + ".md", 'utf-8')
|
|
30
|
-
const html = marked.parse(data); //将md内容转为html内容
|
|
31
|
-
let template = createTemplate();
|
|
32
|
-
template = template.replace('{{{content}}}', html); //替换html内容占位标记
|
|
33
|
-
|
|
34
|
-
let css = fs.readFileSync(path.join(__dirname) + '/github-markdown.min.css', 'utf8')
|
|
35
|
-
template = template.replace('{{{style}}}', css); //替换css内容占位标记
|
|
36
|
-
createFile(template, outPath, outFile);
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* 创建页面模板
|
|
41
|
-
* @returns {string} 页面骨架字符串
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
function createTemplate() {
|
|
45
|
-
const template = `<!DOCTYPE html>
|
|
46
|
-
<html>
|
|
47
|
-
<head>
|
|
48
|
-
<meta charset="utf-8" >
|
|
49
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
50
|
-
<title>开发日志</title>
|
|
51
|
-
<style>
|
|
52
|
-
.markdown-body {
|
|
53
|
-
box-sizing: border-box;
|
|
54
|
-
min-width: 200px;
|
|
55
|
-
max-width: 980px;
|
|
56
|
-
margin: 0 auto;
|
|
57
|
-
padding: 45px;
|
|
58
|
-
}
|
|
59
|
-
@media (max-width: 767px) {
|
|
60
|
-
.markdown-body {
|
|
61
|
-
padding: 15px;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
{{{style}}}
|
|
65
|
-
</style>
|
|
66
|
-
</head>
|
|
67
|
-
<body>
|
|
68
|
-
<article class="markdown-body">
|
|
69
|
-
{{{content}}}
|
|
70
|
-
</article>
|
|
71
|
-
</body>
|
|
72
|
-
</html>`;
|
|
73
|
-
return template;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 创建html文件
|
|
78
|
-
* @param {string} content 写入html的文件内容
|
|
79
|
-
*/
|
|
80
|
-
function createFile(content, outPath = "dist", outFile) {
|
|
81
|
-
const suffix = 'html'; //文件格式
|
|
82
|
-
const fullName = outFile + '.' + suffix; //文件全名
|
|
83
|
-
const file = path.join(outPath, fullName); //文件地址
|
|
84
|
-
fs.writeFileSync(file, content, 'utf-8')
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
module.exports = {
|
|
88
|
-
createFile, createTemplate, change, watchFile
|
|
89
|
-
}
|
package/utils/notifyIM.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 调用IM机器人进行群通知
|
|
3
|
-
*/
|
|
4
|
-
const { postParams } = require('../utils/http');
|
|
5
|
-
// 同步执行exe命令
|
|
6
|
-
const exec = require('child_process').execSync;
|
|
7
|
-
// 控制台样式
|
|
8
|
-
const chalk = require("chalk")
|
|
9
|
-
// 网络请求
|
|
10
|
-
const axios = require("axios")
|
|
11
|
-
module.exports = {
|
|
12
|
-
/**
|
|
13
|
-
* 通知钉钉群
|
|
14
|
-
*/
|
|
15
|
-
notifyDingDing: (type, version, projectConfig, user) => {
|
|
16
|
-
if (projectConfig && projectConfig.config) {
|
|
17
|
-
let body = {
|
|
18
|
-
"msgtype": "actionCard",
|
|
19
|
-
"actionCard": {
|
|
20
|
-
"title": `${projectConfig.name}项目发布通知`,
|
|
21
|
-
"text": `${projectConfig.name}项目发布通知` + "\n\n 项 目 名:" + projectConfig.name + "\n\n分 支 名:" + exec("git branch --show-current").toString("utf8").trim() + "\n\nTag :" + type + "\n\n版 本 号:" + version + "\n\n发 布 者:" + user,
|
|
22
|
-
"btnOrientation": "1",
|
|
23
|
-
"btns": [
|
|
24
|
-
{
|
|
25
|
-
"title": "迭代日志",
|
|
26
|
-
"actionURL": projectConfig.config["doc-" + type]
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// 获取钉钉推送地址
|
|
32
|
-
let triggers = projectConfig.config["dingding-" + type];
|
|
33
|
-
if (triggers) {
|
|
34
|
-
triggers.map((trigger) => {
|
|
35
|
-
axios.post(trigger, body);
|
|
36
|
-
})
|
|
37
|
-
console.log(chalk.green('已通知钉钉群,请查看。'));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
/**
|
|
42
|
-
* 通知飞书群
|
|
43
|
-
*/
|
|
44
|
-
notifyFeishu: (type, version, projectConfig, user) => {
|
|
45
|
-
if (projectConfig && projectConfig.config) {
|
|
46
|
-
let body = {
|
|
47
|
-
"msg_type": "interactive",
|
|
48
|
-
"card": {
|
|
49
|
-
"config": {
|
|
50
|
-
"wide_screen_mode": true,
|
|
51
|
-
"enable_forward": true
|
|
52
|
-
},
|
|
53
|
-
"elements": [{
|
|
54
|
-
"tag": "markdown",
|
|
55
|
-
"content": "项目名称:" + projectConfig.name + "\n分支:" + exec("git branch --show-current").toString("utf8").trim() + "\nTag:" + type + "\n版本号:" + version + "\n发布者:" + user
|
|
56
|
-
}, {
|
|
57
|
-
"actions": [{
|
|
58
|
-
"tag": "button",
|
|
59
|
-
"text": {
|
|
60
|
-
"content": "更新日志",
|
|
61
|
-
"tag": "lark_md"
|
|
62
|
-
},
|
|
63
|
-
"url": projectConfig.config["doc-" + type],
|
|
64
|
-
"type": "default",
|
|
65
|
-
"value": {}
|
|
66
|
-
}],
|
|
67
|
-
"tag": "action"
|
|
68
|
-
}],
|
|
69
|
-
"header": {
|
|
70
|
-
"title": {
|
|
71
|
-
"content": `${projectConfig.name}项目发布通知`,
|
|
72
|
-
"tag": "plain_text"
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// 获取飞书推送地址
|
|
78
|
-
let triggers = projectConfig.config["feishu-" + type];
|
|
79
|
-
if (triggers) {
|
|
80
|
-
triggers.map((trigger) => {
|
|
81
|
-
postParams(trigger, body);
|
|
82
|
-
})
|
|
83
|
-
console.log(chalk.green('已通知飞书群,请查看。'));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|