blob: 2917d981250b69cc4cec09def62766835366bdad [file] [log] [blame]
package apidiff
import (
"bytes"
"fmt"
"io"
)
// Report describes the changes detected by Changes.
type Report struct {
Incompatible, Compatible []string
}
func (r Report) String() string {
var buf bytes.Buffer
if err := r.Text(&buf); err != nil {
return fmt.Sprintf("!!%v", err)
}
return buf.String()
}
func (r Report) Text(w io.Writer) error {
var err error
write := func(s string) {
if err == nil {
_, err = io.WriteString(w, s)
}
}
writeslice := func(ss []string) {
for _, s := range ss {
write("- ")
write(s)
write("\n")
}
}
if len(r.Incompatible) > 0 {
write("Incompatible changes:\n")
writeslice(r.Incompatible)
}
if len(r.Compatible) > 0 {
if len(r.Incompatible) > 0 {
write("\n")
}
write("Compatible changes:\n")
writeslice(r.Compatible)
}
return err
}