package main import ( "errors" "fmt" "dev.hexasoftware.com/x/seq" "dev.hexasoftware.com/hxs/prettylog" ) type Xpto struct { ID string } func GenXpto(i int) (*Xpto, error) { return &Xpto{fmt.Sprintf("ID:%d", i)}, nil } func AnotherRandomFunc() error { return errors.New("I have a error") } func NextXpto(id string) error { return nil } func MyFunc() func(...interface{}) error { s := seq.NewSeq() return s.Exec } func main() { prettylog.Global() t := seq.NewTasker() s := t.Define("RUN") val := &Xpto{} s.Add("GenXpto", GenXpto, 10).Grab(&val) s.Add("NextXpto", func() error { return NextXpto(val.ID) }) s.Add("NextXpto2", func(p *Xpto) error { return NextXpto(p.ID) }, seq.RetFrom(0, 0)) s.Add("Again", NextXpto, seq.ExecParam(0)) t.Exec("RUN", "abc") s2 := seq.NewSeq() s2.Add("Generate Xpto", func(s *seq.Context) error { xpto, err := GenXpto(10) s.Set("xpto", xpto) return err }) s2.Add("Consume xpto", func(s *seq.Context) error { var v *Xpto = s.Get("xpto").(*Xpto) return NextXpto(v.ID) }) s2.Exec() }