package buildstep import ( sdkstep "git.novox.be/novox/mesh-sdk/go/buildstep" stdio "git.novox.be/novox/mesh-sdk/go" ) // StepEndTool is the module's step-end tool, named name (build_go_step_end): it ends one step left running, with a // reason, refusing one this process started. p may be nil. func StepEndTool(name string, node string, scan sdkstep.Scan, p *Puller) stdio.Tool { return stdio.Tool{Name: name, Description: "End one step of this machine that is stuck in state running (for instance left by a restart of the module) " + "as failed, with the reason given; its asker then sees it over, so ending an ask still in its stream fails its asker. " + "A step not running, or one this process started, is refused. " + "id is the step id or the key ..", Input: map[string]any{"type": "object", "required": []string{"id", "why"}, "properties": map[string]any{ "id": map[string]any{"type": "string", "description": "the step id, or the key ."}, "why": map[string]any{"type": "string", "description": "why it is ended; it becomes the step's reason"}}}, Run: func(args map[string]any) (any, error) { id, _ := args["id"].(string) why, _ := args["why"].(string) var live func(string) bool if p != nil { live = func(id string) bool { for _, r := range p.Running() { if r.ID == id { return true } } return false } } return sdkstep.EndOne(scan, node, id, why, live) }} }