UNPKG

2.2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const util = require("util");
4const ActionResult_1 = require("../../../action/ActionResult");
5const logger_1 = require("../../../internal/util/logger");
6const gitHub_1 = require("../../../util/gitHub");
7const GitHubRepoRef_1 = require("../../common/GitHubRepoRef");
8const ProjectOperationCredentials_1 = require("../../common/ProjectOperationCredentials");
9/**
10 * afterAction for use in generatorUtils.generate function that adds the Atomist web hook
11 * for the repo
12 * @param {GitProject} p
13 * @param {SeedDrivenGeneratorParameters} params
14 * @return {any}
15 */
16exports.addAtomistWebhook = (p, params) => addWebhook(p, params)
17 .then(r => (Object.assign({}, r, { target: p })));
18function addWebhook(p, params) {
19 if (!params.addAtomistWebhook) {
20 return Promise.resolve(ActionResult_1.successOn(p));
21 }
22 function logAndFail(fmt, ...args) {
23 const msg = util.format(fmt, ...args);
24 logger_1.logger.error(msg);
25 return Promise.resolve(ActionResult_1.failureOn(p, new Error(msg), { name: "addWebhook" }));
26 }
27 if (!GitHubRepoRef_1.isGitHubRepoRef(p.id)) {
28 return logAndFail("Unable to add Atomist web hook: Not a GitHub repo [%j]", p.id);
29 }
30 if (!params.target.webhookUrl) {
31 return logAndFail("Requested to add webhook but no URL provided");
32 }
33 if (!ProjectOperationCredentials_1.isTokenCredentials(params.target.credentials)) {
34 return logAndFail("Requested to add webhook but no GitHub token provided");
35 }
36 const payload = {
37 name: "web",
38 events: ["*"],
39 active: true,
40 config: {
41 url: params.target.webhookUrl,
42 content_type: "json",
43 },
44 };
45 return gitHub_1.addRepoWebhook(params.target.credentials.token, p.id, payload)
46 .then(() => Promise.resolve(ActionResult_1.successOn(p)), err => {
47 const status = (err.response && err.response.status) ? err.response.status : -1;
48 return logAndFail("Failed to install Atomist webhook on %s/%s [%d]: %s", p.id.owner, p.id.repo, status, err.message);
49 });
50}
51//# sourceMappingURL=addAtomistWebhook.js.map
\No newline at end of file