import { ExtensionPack, CommandHandlerRegistration, CommandListenerInvocation } from "@atomist/sdm"; import { metadata } from "@atomist/sdm/api-helper/misc/extensionPack"; import { GitProviderType } from "./enum"; import { converge } from "./converge"; import { SlackFileMessage } from "@atomist/automation-client/spi/message/MessageClient"; import { logger } from "@atomist/automation-client"; export interface ConvergeParameters { providerType: string, } const convergeRegistration: CommandHandlerRegistration = { name: "configConverger", description: "converge a resource config policy", intent: "converge", parameters: { providerType: { required: true, description: "bitbucket, github, or gitlab" } }, listener: async (cli: CommandListenerInvocation) => { switch (cli.parameters.providerType) { case "gitlab": { return converge({ credentials: "", type: GitProviderType.gitlab, config: { projects: [""] }, url: "http://35.199.59.160/", getUrl: (policy) => { return "https://webhook-staging.atomist.services/atomist/gitlab/teams/A4EOI5D1E/"; } }).then(result => { cli.addressChannels(`result ${result}`); }).catch(error => { cli.addressChannels(`error ${error}`); }); } case "github": { return converge({ credentials: "", type: GitProviderType.gitlab, config: { orgs: ["slimslender"] }, getUrl: (policy) => { return "https://webhook-staging.atomist.services/atomist/github/teams/A4EOI5D1E/zjlmxjzwhurspem"; } }).then(result => { cli.addressChannels(`result ${result}`); }).catch(error => { cli.addressChannels(`error ${error}`); }); } case "bitbucket": { const buff: Array = new Array(); return converge({ credentials: { username: "slimslenderslacks", password: "slimslenderslacks" }, type: GitProviderType.bitbucket, config: { projects: ["SLIM"] }, logger: (log: string) => { logger.info("LOG: " + log); buff.push(log); }, url: "http://bitbucket-server-54.atomist.com:7990/", getUrl: (policy) => { return "https://webhook-staging.atomist.services/atomist/bitbucket/teams/A4EOI5D1E/7cq796lgw39rlsi" } }).then(result => { if (result) { cli.addressChannels("converge success"); logger.info("buff " + buff.toString() + "."); const message: SlackFileMessage = { content: buff.join("\n"), fileType: "text", title: `converge report`, }; cli.addressChannels(message); } else { cli.addressChannels("converge fail"); } }).catch(error => { cli.addressChannels("converge error " + error); }); } } }, }; export const RccaSupport: ExtensionPack = { ...metadata(), configure: sdm => { sdm.addCommand(convergeRegistration); }, };