Skip to content

Quick Start

Create a filter and check files:

package main
import (
"fmt"
"github.com/LarsArtmann/gogenfilter"
)
func main() {
f := gogenfilter.NewFilter(
gogenfilter.Enabled(),
gogenfilter.WithFilterOptions(gogenfilter.FilterAll),
)
filtered, err := f.ShouldFilter("db/models.go")
if err != nil {
panic(err)
}
if filtered {
fmt.Println("skipping generated file")
}
}

Target only the generators you care about:

f := gogenfilter.NewFilter(
gogenfilter.Enabled(),
gogenfilter.WithFilterOptions(
gogenfilter.FilterSQLC,
gogenfilter.FilterTempl,
),
)

Track what gets filtered and why:

f := gogenfilter.NewFilter(
gogenfilter.Enabled(),
gogenfilter.WithFilterOptions(gogenfilter.FilterAll),
)
f.ShouldFilter("db/models.go")
f.ShouldFilter("page_templ.go")
f.ShouldFilter("main.go")
stats := f.GetStats()
fmt.Printf("Checked: %d, Filtered: %d\n",
stats.TotalFilesChecked, stats.TotalFiltered())

A disabled filter passes everything through — useful for feature flags:

f := gogenfilter.NewFilter(gogenfilter.Disabled())
filtered, _ := f.ShouldFilter("db/models.go") // always false

Use detection functions directly without creating a Filter:

content, _ := os.ReadFile("db/models.go")
reason := gogenfilter.DetectReason("db/models.go", string(content),
gogenfilter.FilterSQLC,
gogenfilter.FilterGeneric,
)
if reason != gogenfilter.ReasonNotFiltered {
fmt.Printf("Generated by: %s\n", reason)
}