diff --git a/client/clienter.go b/client/clienter.go index 924586f..4393071 100644 --- a/client/clienter.go +++ b/client/clienter.go @@ -11,7 +11,7 @@ type Clienter interface { Branches(ctx context.Context, repoDirs []string, args ...string) error CheckoutRepos(ctx context.Context, repoDirs []string, args ...string) error CloneRepos(ctx context.Context, dir string) ([]*Repository, error) - DiffRepos(ctx context.Context, repoDirs []string, args ...string) error + DiffRepos(ctx context.Context, repoDirs []string, ignoreEmtpy bool, args ...string) error GetDirs(ctx context.Context, dir string) ([]string, error) GetLogins(ctx context.Context) ([]string, error) GetRepos(ctx context.Context, name string) ([]*github.Repository, error) diff --git a/client/repos_diff.go b/client/repos_diff.go index c46189d..e1da72a 100644 --- a/client/repos_diff.go +++ b/client/repos_diff.go @@ -8,7 +8,7 @@ import ( "strings" ) -func (c *Client) DiffRepos(ctx context.Context, dirs []string, args ...string) error { +func (c *Client) DiffRepos(ctx context.Context, dirs []string, ignoreEmtpy bool, args ...string) error { args = append([]string{"diff"}, args...) c.scrb.BeginDescribe("Command") @@ -30,6 +30,10 @@ func (c *Client) DiffRepos(ctx context.Context, dirs []string, args ...string) e err := cmd.Run() + if ignoreEmtpy && out.Len() == 0 && err == nil { + continue + } + c.scrb.BeginDescribe(dir) if err != nil { c.scrb.Error(err) diff --git a/client/testclient/client.go b/client/testclient/client.go index 78f1e75..dc8d9a8 100644 --- a/client/testclient/client.go +++ b/client/testclient/client.go @@ -99,7 +99,7 @@ func (c *TestClient) TagRepos(ctx context.Context, repoDirs []string, args ...st return nil } -func (c *TestClient) DiffRepos(ctx context.Context, repoDirs []string, args ...string) error { +func (c *TestClient) DiffRepos(ctx context.Context, repoDirs []string, ignoreEmtpy bool, args ...string) error { c.CommandsCalled = append(c.CommandsCalled, "DiffRepos") return nil diff --git a/cmd/diff.go b/cmd/diff.go index 5223fc8..453b44d 100644 --- a/cmd/diff.go +++ b/cmd/diff.go @@ -8,14 +8,18 @@ import ( ) var ( - short bool - nameOnly bool + short bool + nameOnly bool + ignoreEmtpy bool ) func init() { RootCmd.AddCommand(diffCmd) diffCmd.Flags().StringVar(&dir, "dir", ".", "directory to diff repos from") + + diffCmd.Flags().BoolVar(&ignoreEmtpy, "ignore-empty", false, "ignore empty diffs") + diffCmd.Flags().BoolVar(&short, "shortstat", false, "show only the number of changed files, insertions, and deletions") diffCmd.Flags().BoolVar(&nameOnly, "name-only", false, "show only names of changed files") @@ -48,7 +52,7 @@ func diffFunc(cmd *cobra.Command, args []string) error { args = append(args, "--name-only") } - err = clt.DiffRepos(ctx, repoDirs, args...) + err = clt.DiffRepos(ctx, repoDirs, ignoreEmtpy, args...) if err != nil { cmd.SilenceUsage = true return fmt.Errorf("diff repos: %w", err)