Examples
Real-world pipeline recipes showing patterns in action.
Each command ships an /alias package that re-exports its constructor and options under short names. Import the ones you need:
import (
"os"
gloo "github.com/gloo-foo/framework"
grep "github.com/gloo-foo/cmd-grep/alias"
sort "github.com/gloo-foo/cmd-sort/alias"
uniq "github.com/gloo-foo/cmd-uniq/alias"
)
Log Processing
Find 5xx errors, sort them, count unique occurrences.
filter
accumulate
stateful-filter
go
gloo.Run(source, gloo.ByteWriteTo(os.Stdout),
grep.Grep("5[0-9]{2}", grep.Extended),
sort.Sort(),
uniq.Uniq(uniq.Count),
)
Filter selects lines matching 5xx. Accumulate sorts. StatefulFilter deduplicates and counts.
Data Transformation
CSV to JSON, then pluck specific fields.
accumulate
map
go
gloo.Run(source, gloo.ByteWriteTo(os.Stdout),
fromcsv.FromCsv(),
pluck.Pluck("name", "email"),
)
FromCsv accumulates rows into JSON objects; Pluck maps each object to just the named fields.Field Extraction
Extract fields 1 and 3 from comma-delimited input.
map
go
gloo.Run(source, gloo.ByteWriteTo(os.Stdout),
cut.Cut(cut.Fields(1, 3), cut.Delimiter(",")),
)
One Map command. Clean, readable, type-safe.
Multi-Stage ETL
Filter active records, extract a field, number results, take first 10.
filter
map
stateful-map
stateful-filter
go
gloo.Chain(source).
To(grep.Grep("active", grep.IgnoreCase)).
To(cut.Cut(cut.Fields(3), cut.Delimiter(","))).
To(nl.Nl()).
To(head.Head(head.Lines(10))).
Sink(gloo.ByteWriteTo(os.Stdout))
Filter → Map → StatefulMap → StatefulFilter. Four patterns, four lines.