@codefresh-io/cf-git-providers
Version:
An NPM module/CLI for interacting with various git providers
85 lines • 3.15 kB
JavaScript
;
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