cmd/apidiff: in -incompatible mode, don't show header
Currently if there's some breaking change we're OK with, we have to do
something like this:
```
apidiff -incompatible | \
grep -v ThingImOkWith | \
grep -v "Incompatible changes" | \
(! read)
```
This CL changes the -incompatible flag to not show the header, meaning we
don't have to grep exclude it out. The experience ends up being a bit nicer.
Also, apart from the scripting niceties we get from this CL, the header is not
really required if I already specified that I want incompatible changes.
Change-Id: I6e40fcb36a14255d85f8cc0c3db7a8cf58a840d2
Reviewed-on: https://go-review.googlesource.com/c/155459
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/apidiff/report.go b/apidiff/report.go
index 454ff35..fd346b1 100644
--- a/apidiff/report.go
+++ b/apidiff/report.go
@@ -20,14 +20,17 @@
}
func (r Report) Text(w io.Writer) error {
- if err := r.TextIncompatible(w); err != nil {
+ if err := r.TextIncompatible(w, true); err != nil {
return err
}
return r.TextCompatible(w)
}
-func (r Report) TextIncompatible(w io.Writer) error {
- return r.writeMessages(w, "Incompatible changes:", r.Incompatible)
+func (r Report) TextIncompatible(w io.Writer, withHeader bool) error {
+ if withHeader {
+ return r.writeMessages(w, "Incompatible changes:", r.Incompatible)
+ }
+ return r.writeMessages(w, "", r.Incompatible)
}
func (r Report) TextCompatible(w io.Writer) error {
@@ -38,8 +41,10 @@
if len(msgs) == 0 {
return nil
}
- if _, err := fmt.Fprintf(w, "%s\n", header); err != nil {
- return err
+ 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 {
diff --git a/cmd/apidiff/main.go b/cmd/apidiff/main.go
index 7cc0caf..aeaf1a7 100644
--- a/cmd/apidiff/main.go
+++ b/cmd/apidiff/main.go
@@ -55,7 +55,7 @@
report := apidiff.Changes(oldpkg, newpkg)
var err error
if *incompatibleOnly {
- err = report.TextIncompatible(os.Stdout)
+ err = report.TextIncompatible(os.Stdout, false)
} else {
err = report.Text(os.Stdout)
}