cmd/ejobs: avoid displaying default help message for http errors

- Previously, the full help message was displayed for every error.
- If there is an HTTP error, just display the error.

Change-Id: Icacf6e55cf9b8430176cd31de0525d7667a3142d
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/698256
Auto-Submit: Ethan Lee <ethanalee@google.com>
Reviewed-by: Neal Patel <nealpatel@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/cmd/ejobs/main.go b/cmd/ejobs/main.go
index fce4f00..b9d3b32 100644
--- a/cmd/ejobs/main.go
+++ b/cmd/ejobs/main.go
@@ -131,11 +131,18 @@
 	flag.Parse()
 	if err := run(context.Background()); err != nil {
 		fmt.Fprintf(os.Stderr, "%v\n\n", err)
-		flag.Usage()
+		var httpErr *httpError
+		if !errors.As(err, &httpErr) {
+			flag.Usage()
+		}
 		os.Exit(2)
 	}
 }
 
+type httpError struct{ msg string }
+
+func (e *httpError) Error() string { return e.msg }
+
 var workerURL string
 
 func run(ctx context.Context) error {
@@ -603,7 +610,7 @@
 		return nil, fmt.Errorf("reading body (%s): %v", res.Status, err)
 	}
 	if res.StatusCode != 200 {
-		return nil, fmt.Errorf("%s: %s", res.Status, body)
+		return nil, &httpError{msg: string(body)}
 	}
 	return body, nil
 }