+53
-600
api/tangled/cbor_gen.go
+53
-600
api/tangled/cbor_gen.go
······-if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("environment"))); err != nil {······-if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("environment"))); err != nil {-if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("dependencies"))); err != nil {·········
+4
-18
api/tangled/tangledpipeline.go
+4
-18
api/tangled/tangledpipeline.go
·········
-2
cmd/gen.go
-2
cmd/gen.go
···
+26
-3
docs/spindle/pipeline.md
+26
-3
docs/spindle/pipeline.md
···
+7
-63
lexicons/pipeline/pipeline.json
+7
-63
lexicons/pipeline/pipeline.json
······
+2
-2
nix/modules/spindle.nix
+2
-2
nix/modules/spindle.nix
···
+4
-4
spindle/config/config.go
+4
-4
spindle/config/config.go
······
+1
-1
spindle/engine/ansi_stripper.go
spindle/engines/nixery/ansi_stripper.go
+1
-1
spindle/engine/ansi_stripper.go
spindle/engines/nixery/ansi_stripper.go
+64
-416
spindle/engine/engine.go
+64
-416
spindle/engine/engine.go
······-func New(ctx context.Context, cfg *config.Config, db *db.DB, n *notifier.Notifier, vault secrets.Manager) (*Engine, error) {-func (e *Engine) StartWorkflows(ctx context.Context, pipeline *models.Pipeline, pipelineId models.PipelineId) {+func StartWorkflows(l *slog.Logger, vault secrets.Manager, cfg *config.Config, db *db.DB, n *notifier.Notifier, ctx context.Context, pipeline *models.Pipeline, pipelineId models.PipelineId) {if didSlashRepo, err := securejoin.SecureJoin(pipeline.RepoOwner, pipeline.RepoName); err == nil {-if res, err := e.vault.GetSecretsUnlocked(ctx, secrets.DidSlashRepo(didSlashRepo)); err == nil {-e.l.Error("pipeline image pull failed!", "image", w.Image, "workflowId", wid, "error", err.Error())-func (e *Engine) StartSteps(ctx context.Context, wid models.WorkflowId, w models.Workflow, secrets []secrets.UnlockedSecret) error {-e.l.Error("workflow failed!", "workflow_id", wid.String(), "error", state.Error, "exit_code", state.ExitCode, "oom_killed", state.OOMKilled)-func (e *Engine) WaitStep(ctx context.Context, containerID string) (*container.State, error) {-func (e *Engine) TailStep(ctx context.Context, containerID string, wid models.WorkflowId, stepIdx int, step models.Step) error {-// Error response from podman daemon: can only kill running containers. ... is in state exited-return err != nil && (strings.Contains(err.Error(), "No such container") || strings.Contains(err.Error(), "is not running") || strings.Contains(err.Error(), "can only kill running containers"))
+1
-1
spindle/engine/envs.go
spindle/engines/nixery/envs.go
+1
-1
spindle/engine/envs.go
spindle/engines/nixery/envs.go
+1
-1
spindle/engine/envs_test.go
spindle/engines/nixery/envs_test.go
+1
-1
spindle/engine/envs_test.go
spindle/engines/nixery/envs_test.go
-9
spindle/engine/errors.go
-9
spindle/engine/errors.go
+8
-10
spindle/engine/logger.go
spindle/models/logger.go
+8
-10
spindle/engine/logger.go
spindle/models/logger.go
·····················
+476
spindle/engines/nixery/engine.go
+476
spindle/engines/nixery/engine.go
···+func (e *Engine) InitWorkflow(twf tangled.Pipeline_Workflow, tpl tangled.Pipeline) (*models.Workflow, error) {+func (e *Engine) SetupWorkflow(ctx context.Context, wid models.WorkflowId, wf *models.Workflow) error {+e.l.Error("pipeline image pull failed!", "image", addl.image, "workflowId", wid, "error", err.Error())+func (e *Engine) RunStep(ctx context.Context, wid models.WorkflowId, w *models.Workflow, idx int, secrets []secrets.UnlockedSecret, wfLogger *models.WorkflowLogger) error {+e.l.Error("workflow failed!", "workflow_id", wid.String(), "error", state.Error, "exit_code", state.ExitCode, "oom_killed", state.OOMKilled)+func (e *Engine) WaitStep(ctx context.Context, containerID string) (*container.State, error) {+func (e *Engine) tailStep(ctx context.Context, wfLogger *models.WorkflowLogger, containerID string, wid models.WorkflowId, stepIdx int, step models.Step) error {+// Error response from podman daemon: can only kill running containers. ... is in state exited+return err != nil && (strings.Contains(err.Error(), "No such container") || strings.Contains(err.Error(), "is not running") || strings.Contains(err.Error(), "can only kill running containers"))
+7
spindle/engines/nixery/errors.go
+7
spindle/engines/nixery/errors.go
+17
spindle/models/engine.go
+17
spindle/models/engine.go
···+RunStep(ctx context.Context, wid WorkflowId, w *Workflow, idx int, secrets []secrets.UnlockedSecret, wfLogger *WorkflowLogger) error
+3
-3
spindle/models/models.go
+3
-3
spindle/models/models.go
···
+8
-103
spindle/models/pipeline.go
+8
-103
spindle/models/pipeline.go
······
+10
-13
spindle/models/setup_steps.go
spindle/engines/nixery/setup_steps.go
+10
-13
spindle/models/setup_steps.go
spindle/engines/nixery/setup_steps.go
···············installCmd := "nix --extra-experimental-features nix-command --extra-experimental-features flakes profile install"
+38
-8
spindle/server.go
+38
-8
spindle/server.go
·····················
+1
-2
spindle/stream.go
+1
-2
spindle/stream.go
······
+2
-2
spindle/xrpc/xrpc.go
+2
-2
spindle/xrpc/xrpc.go
······
+17
-36
workflow/compile.go
+17
-36
workflow/compile.go
············
+23
-29
workflow/compile_test.go
+23
-29
workflow/compile_test.go
············
+6
-33
workflow/def.go
+6
-33
workflow/def.go
·········
+1
-86
workflow/def_test.go
+1
-86
workflow/def_test.go
······-assert.ElementsMatch(t, []string{"tbsp"}, wf.Dependencies["git+https://tangled.sh/@oppi.li/tbsp"])-assert.ElementsMatch(t, []string{"statix"}, wf.Dependencies["git+https://git.peppe.rs/languages/statix"])······