UNPKG

1.86 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.sendSlackMessage = void 0;
9
10var _requestPromiseNative = _interopRequireDefault(require("request-promise-native"));
11
12var _utils = require("@auto/utils");
13
14var _utils2 = require("./utils");
15
16const 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
56exports.sendSlackMessage = sendSlackMessage;
\No newline at end of file