The runner, the toolchain guard, the fetch, the parsers, buildcpu, the conformance kit and mesh-pack move from mesh-sdk's buildstep into modules/mesh-build-go/buildstep (own go.mod). mesh-build-go, mesh-build-node and mesh-build-image require it by a same-repository replace; what the delivery parts read (the failure contract, the fetch request, the stale sweep, the module tree shape, NewID, CapacitySetting) stays imported from mesh-sdk as sdkstep. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL
37 lines
1.4 KiB
Go
37 lines
1.4 KiB
Go
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 <node>.<id>.",
|
|
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 <node>.<id>"},
|
|
"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)
|
|
}}
|
|
}
|