UNPKG

@codefresh-io/cf-git-providers

Version:

An NPM module/CLI for interacting with various git providers

85 lines 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = exports.builder = exports.desc = exports.aliases = exports.command = void 0; const helpers_1 = require("../../../helpers"); // tslint:disable-next-line: no-var-requires const logger = (0, helpers_1.createNewLogger)('codefresh:create:webhook'); exports.command = 'webhook'; exports.aliases = ['wh', 'hook']; exports.desc = 'Create a git repository webhook'; const builder = (yargs) => yargs .usage('Usage: $0 create webhook [options]') .option('owner', { alias: 'o', demandOption: (0, helpers_1.errormsg) `must provide "owner" option`, describe: 'The name of the owner of the git repository', type: 'string' }) .option('repo', { alias: 'r', demandOption: (0, helpers_1.errormsg) `must provide "repo" option`, describe: 'The name of the git repository', type: 'string' }) .option('endpoint', { alias: 'e', demandOption: (0, helpers_1.errormsg) `must provide "endpoint" option`, describe: 'The endpoint to which webhook payloads will be delivered', type: 'string' }) .option('secret', { alias: 't', demandOption: (0, helpers_1.errormsg) `must provide "secret" option`, describe: 'The secret that will be used later to verify the webhook', type: 'string' }) .example(`$0 create ${exports.command} -o some-owner -r some-repo -e http://some-endpoint/webhooks -s secret`, 'Creates a new webhook for repo: "some-owner/some-repo" and payloads will be delivered to: ' + '"http://some-endpoint/webhooks" with the secret: "secret"'); exports.builder = builder; const handler = async (argv) => { const owner = argv.owner; const repo = argv.repo; const endpoint = argv.endpoint; const secret = argv.secret; const provider = argv.provider; const output = argv.output; logger.debug(`owner=${owner}`); logger.debug(`repo=${repo}`); logger.debug(`endpoint=${endpoint}`); logger.debug(`secret=${secret}`); const [listWebhooksErr, webhooks] = await (0, helpers_1.to)(provider.listWebhooks({ owner, repo, })); if (listWebhooksErr) { (0, helpers_1.exitWithError)(`failed to list webhooks for repository: "${owner}/${repo}", ${listWebhooksErr}`); } let webhook; for (const wh of webhooks) { if (wh.endpoint === endpoint) { logger.debug(`found webhook with endpoint: "${endpoint}" for repo: "${owner}/${repo}"`); webhook = wh; break; } } if (!webhook) { const [err, res] = await (0, helpers_1.to)(provider.createRepositoryWebhook({ owner, repo, endpoint, secret, })); if (err) { (0, helpers_1.exitWithError)(`failed to create webhook for repository: "${owner}/${repo}", ${err}`); } webhook = res; } if (output) { await (0, helpers_1.writeResultsToFile)(output, JSON.stringify(webhook)); } else { console.log(JSON.stringify(webhook)); } }; exports.handler = handler; //# sourceMappingURL=webhook.cmd.js.map