commands: different pattern to detect changed flags

Michael Muré created

Change summary

commands/bug/bug.go      | 33 ++++++++++++++++++---------------
commands/bug/bug_test.go |  7 ++++---
doc/man/git-bug-bug.1    |  2 +-
doc/md/git-bug_bug.md    |  2 +-
4 files changed, 24 insertions(+), 20 deletions(-)

Detailed changes

commands/bug/bug.go 🔗

@@ -21,17 +21,18 @@ import (
 )
 
 type bugOptions struct {
-	statusQuery      []string
-	authorQuery      []string
-	metadataQuery    []string
-	participantQuery []string
-	actorQuery       []string
-	labelQuery       []string
-	titleQuery       []string
-	noQuery          []string
-	sortBy           string
-	sortDirection    string
-	outputFormat     string
+	statusQuery         []string
+	authorQuery         []string
+	metadataQuery       []string
+	participantQuery    []string
+	actorQuery          []string
+	labelQuery          []string
+	titleQuery          []string
+	noQuery             []string
+	sortBy              string
+	sortDirection       string
+	outputFormat        string
+	outputFormatChanged bool
 }
 
 func NewBugCommand(env *execenv.Env) *cobra.Command {
@@ -57,6 +58,7 @@ git bug status:open --by creation "foo bar" baz
 `,
 		PreRunE: execenv.LoadBackend(env),
 		RunE: execenv.CloseBackend(env, func(cmd *cobra.Command, args []string) error {
+			options.outputFormatChanged = cmd.Flags().Changed("format")
 			return runBug(env, options, args)
 		}),
 		ValidArgsFunction: completion.Ls(env),
@@ -93,7 +95,7 @@ git bug status:open --by creation "foo bar" baz
 	flags.StringVarP(&options.sortDirection, "direction", "d", "asc",
 		"Select the sorting direction. Valid values are [asc,desc]")
 	cmd.RegisterFlagCompletionFunc("direction", completion.From([]string{"asc", "desc"}))
-	flags.StringVarP(&options.outputFormat, "format", "f", "",
+	flags.StringVarP(&options.outputFormat, "format", "f", "default",
 		"Select the output formatting style. Valid values are [default,plain,id,json,org-mode]")
 	cmd.RegisterFlagCompletionFunc("format",
 		completion.From([]string{"default", "plain", "id", "json", "org-mode"}))
@@ -156,14 +158,15 @@ func runBug(env *execenv.Env, opts bugOptions, args []string) error {
 	}
 
 	switch opts.outputFormat {
-	case "":
+	case "default":
+		if opts.outputFormatChanged {
+			return bugsDefaultFormatter(env, excerpts)
+		}
 		if env.Out.IsTerminal() {
 			return bugsDefaultFormatter(env, excerpts)
 		} else {
 			return bugsPlainFormatter(env, excerpts)
 		}
-	case "default":
-		return bugsDefaultFormatter(env, excerpts)
 	case "id":
 		return bugsIDFormatter(env, excerpts)
 	case "plain":

commands/bug/bug_test.go 🔗

@@ -72,9 +72,10 @@ $`
 			env, _ := testenv.NewTestEnvAndBug(t)
 
 			opts := bugOptions{
-				sortDirection: "asc",
-				sortBy:        "creation",
-				outputFormat:  testcase.format,
+				sortDirection:       "asc",
+				sortBy:              "creation",
+				outputFormat:        testcase.format,
+				outputFormatChanged: true, // disable auto-detect
 			}
 
 			require.NoError(t, runBug(env, opts, []string{}))

doc/man/git-bug-bug.1 🔗

@@ -61,7 +61,7 @@ You can pass an additional query to filter and order the list. This query can be
 	Select the sorting direction. Valid values are [asc,desc]
 
 .PP
-\fB-f\fP, \fB--format\fP=""
+\fB-f\fP, \fB--format\fP="default"
 	Select the output formatting style. Valid values are [default,plain,id,json,org-mode]
 
 .PP

doc/md/git-bug_bug.md 🔗

@@ -42,7 +42,7 @@ git bug status:open --by creation "foo bar" baz
   -n, --no strings            Filter by absence of something. Valid values are [label]
   -b, --by string             Sort the results by a characteristic. Valid values are [id,creation,edit] (default "creation")
   -d, --direction string      Select the sorting direction. Valid values are [asc,desc] (default "asc")
-  -f, --format string         Select the output formatting style. Valid values are [default,plain,id,json,org-mode]
+  -f, --format string         Select the output formatting style. Valid values are [default,plain,id,json,org-mode] (default "default")
   -h, --help                  help for bug
 ```