UNPKG

@atomist/automation-client

Version:
51 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const util = require("util"); const ActionResult_1 = require("../../../action/ActionResult"); const logger_1 = require("../../../internal/util/logger"); const gitHub_1 = require("../../../util/gitHub"); const GitHubRepoRef_1 = require("../../common/GitHubRepoRef"); const ProjectOperationCredentials_1 = require("../../common/ProjectOperationCredentials"); /** * afterAction for use in generatorUtils.generate function that adds the Atomist web hook * for the repo * @param {GitProject} p * @param {SeedDrivenGeneratorParameters} params * @return {any} */ exports.addAtomistWebhook = (p, params) => addWebhook(p, params) .then(r => (Object.assign({}, r, { target: p }))); function addWebhook(p, params) { if (!params.addAtomistWebhook) { return Promise.resolve(ActionResult_1.successOn(p)); } function logAndFail(fmt, ...args) { const msg = util.format(fmt, ...args); logger_1.logger.error(msg); return Promise.resolve(ActionResult_1.failureOn(p, new Error(msg), { name: "addWebhook" })); } if (!GitHubRepoRef_1.isGitHubRepoRef(p.id)) { return logAndFail("Unable to add Atomist web hook: Not a GitHub repo [%j]", p.id); } if (!params.target.webhookUrl) { return logAndFail("Requested to add webhook but no URL provided"); } if (!ProjectOperationCredentials_1.isTokenCredentials(params.target.credentials)) { return logAndFail("Requested to add webhook but no GitHub token provided"); } const payload = { name: "web", events: ["*"], active: true, config: { url: params.target.webhookUrl, content_type: "json", }, }; return gitHub_1.addRepoWebhook(params.target.credentials.token, p.id, payload) .then(() => Promise.resolve(ActionResult_1.successOn(p)), err => { const status = (err.response && err.response.status) ? err.response.status : -1; return logAndFail("Failed to install Atomist webhook on %s/%s [%d]: %s", p.id.owner, p.id.repo, status, err.message); }); } //# sourceMappingURL=addAtomistWebhook.js.map