back interdiff of round #1 and #0

spindle: make workflows engine-agnostic #423

merged
opened by winter.bsky.social targeting master from winter.bsky.social/core: push-luoyqwkpromz
ERROR
api/tangled/cbor_gen.go

Failed to calculate interdiff for this file.

ERROR
api/tangled/tangledpipeline.go

Failed to calculate interdiff for this file.

ERROR
cmd/gen.go

Failed to calculate interdiff for this file.

ERROR
lexicons/pipeline/pipeline.json

Failed to calculate interdiff for this file.

ERROR
nix/modules/spindle.nix

Failed to calculate interdiff for this file.

ERROR
spindle/config/config.go

Failed to calculate interdiff for this file.

ERROR
spindle/engine/engine.go

Failed to calculate interdiff for this file.

ERROR
spindle/engine/errors.go

Failed to calculate interdiff for this file.

REVERTED
spindle/engine/logger.go
···
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
-
return len(w.step.Name()), nil
}
···
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
+
return len(w.step.Name), nil
}
ERROR
spindle/engines/nixery/ansi_stripper.go

Failed to calculate interdiff for this file.

ERROR
spindle/engines/nixery/engine.go

Failed to calculate interdiff for this file.

ERROR
spindle/engines/nixery/envs.go

Failed to calculate interdiff for this file.

ERROR
spindle/engines/nixery/envs_test.go

Failed to calculate interdiff for this file.

ERROR
spindle/engines/nixery/errors.go

Failed to calculate interdiff for this file.

ERROR
spindle/engines/nixery/setup_steps.go

Failed to calculate interdiff for this file.

ERROR
spindle/models/models.go

Failed to calculate interdiff for this file.

ERROR
spindle/models/pipeline.go

Failed to calculate interdiff for this file.

ERROR
spindle/server.go

Failed to calculate interdiff for this file.

ERROR
spindle/stream.go

Failed to calculate interdiff for this file.

ERROR
spindle/xrpc/xrpc.go

Failed to calculate interdiff for this file.

ERROR
workflow/compile.go

Failed to calculate interdiff for this file.

ERROR
workflow/compile_test.go

Failed to calculate interdiff for this file.

ERROR
workflow/def.go

Failed to calculate interdiff for this file.

ERROR
workflow/def_test.go

Failed to calculate interdiff for this file.

NEW
spindle/models/engine.go
···
···
+
package models
+
+
import (
+
"context"
+
"time"
+
+
"tangled.sh/tangled.sh/core/api/tangled"
+
"tangled.sh/tangled.sh/core/spindle/secrets"
+
)
+
+
type Engine interface {
+
InitWorkflow(twf tangled.Pipeline_Workflow, tpl tangled.Pipeline) (*Workflow, error)
+
SetupWorkflow(ctx context.Context, wid WorkflowId, wf *Workflow) error
+
WorkflowTimeout() time.Duration
+
DestroyWorkflow(ctx context.Context, wid WorkflowId) error
+
RunStep(ctx context.Context, wid WorkflowId, w *Workflow, idx int, secrets []secrets.UnlockedSecret, wfLogger *WorkflowLogger) error
+
}
NEW
spindle/models/logger.go
···
-
package engine
import (
"encoding/json"
···
"os"
"path/filepath"
"strings"
-
-
"tangled.sh/tangled.sh/core/spindle/models"
)
type WorkflowLogger struct {
···
encoder *json.Encoder
}
-
func NewWorkflowLogger(baseDir string, wid models.WorkflowId) (*WorkflowLogger, error) {
path := LogFilePath(baseDir, wid)
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
···
}, nil
}
-
func LogFilePath(baseDir string, workflowID models.WorkflowId) string {
logFilePath := filepath.Join(baseDir, fmt.Sprintf("%s.log", workflowID.String()))
return logFilePath
}
···
}
}
-
func (l *WorkflowLogger) ControlWriter(idx int, step models.Step) io.Writer {
return &controlWriter{
logger: l,
idx: idx,
···
func (w *dataWriter) Write(p []byte) (int, error) {
line := strings.TrimRight(string(p), "\r\n")
-
entry := models.NewDataLogLine(line, w.stream)
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
···
type controlWriter struct {
logger *WorkflowLogger
idx int
-
step models.Step
}
func (w *controlWriter) Write(_ []byte) (int, error) {
-
entry := models.NewControlLogLine(w.idx, w.step)
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
-
return len(w.step.Name), nil
}
···
+
package models
import (
"encoding/json"
···
"os"
"path/filepath"
"strings"
)
type WorkflowLogger struct {
···
encoder *json.Encoder
}
+
func NewWorkflowLogger(baseDir string, wid WorkflowId) (*WorkflowLogger, error) {
path := LogFilePath(baseDir, wid)
file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
···
}, nil
}
+
func LogFilePath(baseDir string, workflowID WorkflowId) string {
logFilePath := filepath.Join(baseDir, fmt.Sprintf("%s.log", workflowID.String()))
return logFilePath
}
···
}
}
+
func (l *WorkflowLogger) ControlWriter(idx int, step Step) io.Writer {
return &controlWriter{
logger: l,
idx: idx,
···
func (w *dataWriter) Write(p []byte) (int, error) {
line := strings.TrimRight(string(p), "\r\n")
+
entry := NewDataLogLine(line, w.stream)
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
···
type controlWriter struct {
logger *WorkflowLogger
idx int
+
step Step
}
func (w *controlWriter) Write(_ []byte) (int, error) {
+
entry := NewControlLogLine(w.idx, w.step)
if err := w.logger.encoder.Encode(entry); err != nil {
return 0, err
}
+
return len(w.step.Name()), nil
}