UNPKG

@atomist/rugs

Version:

Helper functions for Rugs

57 lines (56 loc) 2.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Handlers_1 = require("@atomist/rug/operations/Handlers"); var RugMessages_1 = require("@atomist/slack-messages/RugMessages"); exports.renderError = RugMessages_1.renderError; exports.renderSuccess = RugMessages_1.renderSuccess; var deprecated_decorator_1 = require("deprecated-decorator"); var mustache = require("mustache"); /* * Copyright © 2017 Atomist, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // NOTE: plan is that this file can act as a facade for selecting // rendering style for the message based on some context // (MappedParameter, PE etc) var listIssues = "{\n \"attachments\": [\n {{#issues}}\n {\n \"fallback\": \"#{{number}}: {{{safeTitle}}}\",\n {{#closed}}\n \"footer_icon\": \"http://images.atomist.com/rug/issue-closed.png\",\n \"color\": \"#bd2c00\",\n {{/closed}}\n {{^closed}}\n \"footer_icon\": \"http://images.atomist.com/rug/issue-open.png\",\n \"color\": \"#6cc644\",\n {{/closed}}\n {{#assignee}}\n \"author_link\": \"{{{assignee.html_url}}}\",\n \"author_name\": \"@{{{assignee.login}}}\",\n \"author_icon\": \"{{{assignee.avatar_url}}}\",\n {{/assignee}}\n \"mrkdwn_in\": [\"text\"],\n \"text\": \"<{{{issueUrl}}}|#{{number}}: {{{safeTitle}}}>\",\n \"footer\": \"<{{{url}}}|{{{repo}}}>\",\n \"ts\": \"{{ts}}\"\n }{{^last}}, {{/last}}\n {{/issues}}\n ]\n}"; /** * Render GitHub issues for slack. */ var renderIssues = deprecated_decorator_1.default({ alternative: "@atomist/slack-messages", version: "1.0.0-m.5", }, function oldRenderIssues(issuesList, chatSystem) { var last = "last"; try { issuesList[issuesList.length - 1][last] = true; // horrible mustache hack var msg = mustache.render(listIssues, { assignee: function () { return this.assignee !== undefined; }, closed: function () { return this.state === "closed"; }, safeTitle: function () { return JSON.stringify(this.title); }, issues: issuesList, }); return new Handlers_1.ResponseMessage(msg, Handlers_1.MessageMimeTypes.SLACK_JSON); } catch (ex) { return new Handlers_1.ResponseMessage("Error rendering issues " + ex); } }); exports.renderIssues = renderIssues;