"use strict";
/*
 * Copyright © 2020 Atomist, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.invokeCommand = void 0;
const globals_1 = require("@atomist/automation-client/lib/globals");
const helpers_1 = require("./helpers");
/**
 *  Invoke any registered command programmatically in this SDM instance
 *
 *  @param command name of the CommandRegistration or actual CommandRegistration instance to run
 *  @param parameters parameters to be passed to the command
 *  @param ctx HandlerContext instance
 */
async function invokeCommand(command, parameters, ctx) {
    const name = typeof command === "string" ? command : command.name;
    const trigger = ctx.trigger;
    const md = globals_1.automationClientInstance().automationServer.automations.commands
        .find(c => c.name === name);
    if (!md) {
        return {
            code: 1,
            message: `Command '${name}' could not be found`,
        };
    }
    else {
        // Invoke the command
        return globals_1.automationClientInstance().automationServer.invokeCommand(helpers_1.prepareCommandInvocation(md, parameters), helpers_1.prepareHandlerContext(ctx, trigger));
    }
}
exports.invokeCommand = invokeCommand;
//# sourceMappingURL=invokeCommand.js.map