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 <christopher.homberger@web.de>
Co-committed-by: Christopher Homberger <christopher.homberger@web.de>
This commit is contained in:
Christopher Homberger
2026-02-20 20:06:04 +00:00
committed by ChristopherHX
parent 933c4a5bd5
commit 40ee0f3ef6
2 changed files with 13 additions and 1 deletions

View File

@@ -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)

View File

@@ -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())