+++ /dev/null
-package apidiff
-
-import (
- "bytes"
- "fmt"
- "io"
-)
-
-// Report describes the changes detected by Changes.
-type Report struct {
- Changes []Change
-}
-
-// A Change describes a single API change.
-type Change struct {
- Message string
- Compatible bool
-}
-
-func (r Report) messages(compatible bool) []string {
- var msgs []string
- for _, c := range r.Changes {
- if c.Compatible == compatible {
- msgs = append(msgs, c.Message)
- }
- }
- return msgs
-}
-
-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 {
- if err := r.TextIncompatible(w, true); err != nil {
- return err
- }
- return r.TextCompatible(w)
-}
-
-func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
- if withHeader {
- return r.writeMessages(w, "Incompatible changes:", r.messages(false))
- }
- return r.writeMessages(w, "", r.messages(false))
-}
-
-func (r Report) TextCompatible(w io.Writer) error {
- return r.writeMessages(w, "Compatible changes:", r.messages(true))
-}
-
-func (r Report) writeMessages(w io.Writer, header string, msgs []string) error {
- if len(msgs) == 0 {
- return nil
- }
- if header != "" {
- if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
- return err
- }
- }
- for _, m := range msgs {
- if _, err := fmt.Fprintf(w, "- %s\n", m); err != nil {
- return err
- }
- }
- return nil
-}