9 // Report describes the changes detected by Changes.
14 // A Change describes a single API change.
20 func (r Report) messages(compatible bool) []string {
22 for _, c := range r.Changes {
23 if c.Compatible == compatible {
24 msgs = append(msgs, c.Message)
30 func (r Report) String() string {
32 if err := r.Text(&buf); err != nil {
33 return fmt.Sprintf("!!%v", err)
38 func (r Report) Text(w io.Writer) error {
39 if err := r.TextIncompatible(w, true); err != nil {
42 return r.TextCompatible(w)
45 func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
47 return r.writeMessages(w, "Incompatible changes:", r.messages(false))
49 return r.writeMessages(w, "", r.messages(false))
52 func (r Report) TextCompatible(w io.Writer) error {
53 return r.writeMessages(w, "Compatible changes:", r.messages(true))
56 func (r Report) writeMessages(w io.Writer, header string, msgs []string) error {
61 if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
65 for _, m := range msgs {
66 if _, err := fmt.Fprintf(w, "- %s\n", m); err != nil {