From 40ee0f3ef6fc2368b4f1b393cfeab8aba9d3e465 Mon Sep 17 00:00:00 2001 From: Christopher Homberger Date: Fri, 20 Feb 2026 20:06:04 +0000 Subject: [PATCH] feat: add act runner compat code (#35) * attempt to build an act_runner using this implementation of act with minimal changes on act side. Reviewed-on: https://gitea.com/actions-oss/act-cli/pulls/35 Co-authored-by: Christopher Homberger Co-committed-by: Christopher Homberger --- pkg/model/planner.go | 7 +++++++ pkg/runner/runner.go | 7 ++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/model/planner.go b/pkg/model/planner.go index 66db08ea..a70497e4 100644 --- a/pkg/model/planner.go +++ b/pkg/model/planner.go @@ -60,6 +60,13 @@ type PlannerConfig struct { Workflow WorkflowConfig } +// CombineWorkflowPlanner combines workflows to a WorkflowPlanner +func CombineWorkflowPlanner(workflows ...*Workflow) WorkflowPlanner { + return &workflowPlanner{ + workflows: workflows, + } +} + // NewWorkflowPlanner will load a specific workflow, all workflows from a directory or all workflows from a directory and its subdirectories func NewWorkflowPlanner(path string, config PlannerConfig) (WorkflowPlanner, error) { path, err := filepath.Abs(path) diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 430f0928..2247ee29 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -74,6 +74,8 @@ type Config struct { Planner model.PlannerConfig // Configuration for the workflow planner Action model.ActionConfig // Configuration for action reading MainContextNames []string // e.g. "github", "gitea", "forgejo" + ContextData map[string]interface{} + EventJSON string } func (runnerConfig *Config) GetGitHubServerURL() string { @@ -129,7 +131,9 @@ func New(runnerConfig *Config) (Runner, error) { func (runner *runnerImpl) configure() (Runner, error) { runner.eventJSON = "{}" - if runner.config.EventPath != "" { + if runner.config.EventJSON != "" { + runner.eventJSON = runner.config.EventJSON + } else if runner.config.EventPath != "" { log.Debugf("Reading event.json from %s", runner.config.EventPath) eventJSONBytes, err := os.ReadFile(runner.config.EventPath) if err != nil { @@ -295,6 +299,7 @@ func (runner *runnerImpl) newRunContext(ctx context.Context, run *model.Run, mat StepResults: make(map[string]*model.StepResult), Matrix: matrix, caller: runner.caller, + ContextData: runner.config.ContextData, } rc.ExprEval = rc.NewExpressionEvaluator(ctx) rc.Name = rc.ExprEval.Interpolate(ctx, run.String())