1 // Copyright 2019 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
13 // Report describes the changes detected by Changes.
18 // A Change describes a single API change.
24 func (r Report) messages(compatible bool) []string {
26 for _, c := range r.Changes {
27 if c.Compatible == compatible {
28 msgs = append(msgs, c.Message)
34 func (r Report) String() string {
36 if err := r.Text(&buf); err != nil {
37 return fmt.Sprintf("!!%v", err)
42 func (r Report) Text(w io.Writer) error {
43 if err := r.TextIncompatible(w, true); err != nil {
46 return r.TextCompatible(w)
49 func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
51 return r.writeMessages(w, "Incompatible changes:", r.messages(false))
53 return r.writeMessages(w, "", r.messages(false))
56 func (r Report) TextCompatible(w io.Writer) error {
57 return r.writeMessages(w, "Compatible changes:", r.messages(true))
60 func (r Report) writeMessages(w io.Writer, header string, msgs []string) error {
65 if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
69 for _, m := range msgs {
70 if _, err := fmt.Fprintf(w, "- %s\n", m); err != nil {