@atomist/automation-client
Version:
Atomist API for software low-level client
51 lines • 2.2 kB
JavaScript
;
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