1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.sendSlackMessage = void 0;
|
9 |
|
10 | var _requestPromiseNative = _interopRequireDefault(require("request-promise-native"));
|
11 |
|
12 | var _utils = require("@auto/utils");
|
13 |
|
14 | var _utils2 = require("./utils");
|
15 |
|
16 | const sendSlackMessage = async (logs, prefixes, workspacesOptions, slackOptions) => {
|
17 | if (typeof slackOptions.token !== 'string') {
|
18 | throw new Error('Slack token is required');
|
19 | }
|
20 |
|
21 | const allAttachments = logs.map(log => {
|
22 | const name = (0, _utils.removeAutoNamePrefix)(log.name, workspacesOptions.autoNamePrefix);
|
23 | return {
|
24 | color: slackOptions.colors[log.type],
|
25 | fields: [{
|
26 | title: `${name} v${log.version}`,
|
27 | value: log.messages.map(message => {
|
28 | if (message.type === 'dependencies') {
|
29 | return `${prefixes.required[message.type].value} update dependencies`;
|
30 | }
|
31 |
|
32 | return `${prefixes.required[message.type].value} ${message.value}`;
|
33 | }).join('\n')
|
34 | }]
|
35 | };
|
36 | });
|
37 | const numIterations = Math.ceil(allAttachments.length / _utils2.SLACK_MAX_ATTACHMENTS);
|
38 | const attachmentsInIteration = Math.ceil(allAttachments.length / numIterations);
|
39 |
|
40 | for (let i = 0; i < numIterations; ++i) {
|
41 | await (0, _requestPromiseNative.default)({
|
42 | uri: `${_utils2.SLACK_HOOKS_URL}${slackOptions.token}`,
|
43 | method: 'POST',
|
44 | json: {
|
45 | channel: slackOptions.channel,
|
46 | username: slackOptions.username,
|
47 | link_names: '1',
|
48 | icon_emoji: slackOptions.iconEmoji,
|
49 | unfurl_media: false,
|
50 | attachments: allAttachments.slice(i * attachmentsInIteration, Math.min((i + 1) * attachmentsInIteration, allAttachments.length))
|
51 | }
|
52 | });
|
53 | }
|
54 | };
|
55 |
|
56 | exports.sendSlackMessage = sendSlackMessage; |
\ | No newline at end of file |