This package provides a set of utilities to improve developer UX while writing GitHub Actions in Typescript.
The entrypoint to a GitHub Action should look like this:
import { getInputs, runActionHandler } from "@infra-blocks/github-actions";
// You are free to use your favorite validation library. We like zod.
import { z } from "zod";
interface Outputs {
"example-output": string;
}
async function handler(config: {exampleInput: string; bigInput: number}): Promise<Outputs> {
// The business goes here.
}
runActionHandler(() => {
const inputs = getInputs("example-input", "bigInput");
const config = z.object({
"example-input": z.string(),
bigInput: z.number()
}).transform((parsed) => ({
exampleInput: parsed["example-input"],
bigInput: parse.bigInput
})).parse(inputs);
return handler(config);
});