github.com/operator-framework/operator-lifecycle-manager@v0.30.0/pkg/controller/registry/resolver/solver/tracer.go (about) 1 package solver 2 3 import ( 4 "fmt" 5 "io" 6 ) 7 8 type SearchPosition interface { 9 Variables() []Variable 10 Conflicts() []AppliedConstraint 11 } 12 13 type Tracer interface { 14 Trace(p SearchPosition) 15 } 16 17 type DefaultTracer struct{} 18 19 func (DefaultTracer) Trace(_ SearchPosition) { 20 } 21 22 type LoggingTracer struct { 23 Writer io.Writer 24 } 25 26 func (t LoggingTracer) Trace(p SearchPosition) { 27 fmt.Fprintf(t.Writer, "---\nAssumptions:\n") 28 for _, i := range p.Variables() { 29 fmt.Fprintf(t.Writer, "- %s\n", i.Identifier()) 30 } 31 fmt.Fprintf(t.Writer, "Conflicts:\n") 32 for _, a := range p.Conflicts() { 33 fmt.Fprintf(t.Writer, "- %s\n", a) 34 } 35 }