UNPKG

github-actions-enhanced-dispatch

Version:

Enhanced workflow_dispatch & respository dispatch event trriggers for GitHub Actions

81 lines (71 loc) 1.92 kB
import { Octokit } from "@octokit/core"; import { Inputs, ListWorkflowRunsParams, ListWorkflowRunsResponse, TriggerWorkflowDispatchParams, TriggerWorkflowDispatchResponse, WorkflowRun, } from "./types"; export async function triggerWorkflowDispatch( octokit: Octokit, owner: string, repo: string, workflow_id: string | number, ref: string = "main", inputs?: Inputs, ): Promise<TriggerWorkflowDispatchResponse> { const params: TriggerWorkflowDispatchParams = { owner: owner, repo: repo, workflow_id: workflow_id, ref: ref, inputs: inputs, }; const response = (await octokit.request( "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches", params, )) as TriggerWorkflowDispatchResponse; if (response.status !== 204) { octokit.log.error( `Failed to trigger workflow dispatch: ${response.status} ${response}`, ); } return response; } export async function getRunsForWorkflow( octokit: Octokit, owner: string, repo: string, workflow_id: string | number, branch?: string, per_page: number = 5, ): Promise<ListWorkflowRunsResponse> { const params: ListWorkflowRunsParams = { owner: owner, repo: repo, workflow_id: workflow_id, branch: branch, per_page: per_page, }; const response = (await octokit.request( "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", params, )) as ListWorkflowRunsResponse; return response; } export async function diffWorkflowRuns( batch1: WorkflowRun[], batch2: WorkflowRun[], ): Promise<WorkflowRun[]> { const diff = batch2.filter((run2: WorkflowRun) => { return !batch1.some((run1: WorkflowRun) => run2.id === run1.id); }); if (diff.length > 0) { console.log("New workflow runs detected:", diff); } else { // TODO: Throw error? console.log("No new workflow runs detected."); } return diff; }