forked from tangled.org/core
this repo has no description

spindle: expose knot-side workflow errors as a fake step to the UI

Signed-off-by: Winter <winter@winter.cafe>

Changed files
+31
spindle
+31
spindle/stream.go
···
"fmt"
"io"
"net/http"
+
"os"
"strconv"
"time"
···
isFinished := models.StatusKind(status.Status).IsFinish()
filePath := models.LogFilePath(s.cfg.Server.LogDir, wid)
+
+
if status.Status == models.StatusKindFailed.String() && status.Error != nil {
+
if _, err := os.Stat(filePath); os.IsNotExist(err) {
+
msgs := []models.LogLine{
+
{
+
Kind: models.LogKindControl,
+
Content: "",
+
StepId: 0,
+
StepKind: models.StepKindUser,
+
},
+
{
+
Kind: models.LogKindData,
+
Content: *status.Error,
+
},
+
}
+
+
for _, msg := range msgs {
+
b, err := json.Marshal(msg)
+
if err != nil {
+
return err
+
}
+
+
if err := conn.WriteMessage(websocket.TextMessage, b); err != nil {
+
return fmt.Errorf("failed to write to websocket: %w", err)
+
}
+
}
+
+
return nil
+
}
+
}
config := tail.Config{
Follow: !isFinished,