1import type * as SVC from "@distilled.cloud/aws/codepipeline";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Pipeline } from "./Pipeline.ts";
5
6export interface StartPipelineExecutionRequest extends Omit<
7 SVC.StartPipelineExecutionInput,
8 "name"
9> {}
10
11/**
12 * Runtime binding for `codepipeline:StartPipelineExecution` — lets a
13 * workload kick off an execution of a pipeline (optionally overriding
14 * pipeline variables or source revisions).
15 *
16 * The response carries the `pipelineExecutionId`, which can be observed with
17 * the {@link GetPipelineExecution} binding.
18 * ### Running Pipelines
19 * **Example:** Start an Execution
20 * ```typescript
21 * const startExecution = yield* AWS.CodePipeline.StartPipelineExecution(pipeline);
22 *
23 * const { pipelineExecutionId } = yield* startExecution({
24 * variables: [{ name: "ENV", value: "prod" }],
25 * });
26 * ```
27 *
28 * @binding
29 */
30export interface StartPipelineExecution extends Binding.Service<
31 StartPipelineExecution,
32 "AWS.CodePipeline.StartPipelineExecution",
33 <P extends Pipeline>(
34 pipeline: P,
35 ) => Effect.Effect<
36 (
37 request?: StartPipelineExecutionRequest,
38 ) => Effect.Effect<
39 SVC.StartPipelineExecutionOutput,
40 SVC.StartPipelineExecutionError
41 >
42 >
43> {}
44export const StartPipelineExecution = Binding.Service<StartPipelineExecution>(
45 "AWS.CodePipeline.StartPipelineExecution",
46);