forked from tangled.org/core
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113package models
import ( "fmt" "regexp" "slices"
"tangled.sh/tangled.sh/core/api/tangled"
"github.com/bluesky-social/indigo/atproto/syntax")
var ( re = regexp.MustCompile(`[^a-zA-Z0-9_.-]`))
type PipelineId struct { Knot string Rkey string}
func (p *PipelineId) AtUri() syntax.ATURI { return syntax.ATURI(fmt.Sprintf("at://did:web:%s/%s/%s", p.Knot, tangled.PipelineNSID, p.Rkey))}
type WorkflowId struct { PipelineId Name string}
func (wid WorkflowId) String() string { return fmt.Sprintf("%s-%s-%s", normalize(wid.Knot), wid.Rkey, normalize(wid.Name))}
func normalize(name string) string { normalized := re.ReplaceAllString(name, "-") return normalized}
type StatusKind string
var ( StatusKindPending StatusKind = "pending" StatusKindRunning StatusKind = "running" StatusKindFailed StatusKind = "failed" StatusKindTimeout StatusKind = "timeout" StatusKindCancelled StatusKind = "cancelled" StatusKindSuccess StatusKind = "success"
StartStates [2]StatusKind = [2]StatusKind{ StatusKindPending, StatusKindRunning, } FinishStates [4]StatusKind = [4]StatusKind{ StatusKindCancelled, StatusKindFailed, StatusKindSuccess, StatusKindTimeout, })
func (s StatusKind) String() string { return string(s)}
func (s StatusKind) IsStart() bool { return slices.Contains(StartStates[:], s)}
func (s StatusKind) IsFinish() bool { return slices.Contains(FinishStates[:], s)}
type LogKind string
var ( // step log data LogKindData LogKind = "data" // indicates start/end of a step LogKindControl LogKind = "control")
type LogLine struct { Kind LogKind `json:"kind"` Content string `json:"content"`
// fields if kind is "data" Stream string `json:"stream,omitempty"`
// fields if kind is "control" StepId int `json:"step_id,omitempty"` StepKind StepKind `json:"step_kind,omitempty"` StepCommand string `json:"step_command,omitempty"`}
func NewDataLogLine(content, stream string) LogLine { return LogLine{ Kind: LogKindData, Content: content, Stream: stream, }}
func NewControlLogLine(idx int, step Step) LogLine { return LogLine{ Kind: LogKindControl, Content: step.Name(), StepId: idx, StepKind: step.Kind(), StepCommand: step.Command(), }}