Format flags correctly

vince created

Change summary

bridge/core/bridge.go              |  1 
commands/bridge_configure_doc.go   | 35 +++++++------
doc/gen_docs.go                    | 79 ++++++++++++++++++++++++++-----
doc/man/git-bug-bridge-configure.1 | 35 +++++++------
doc/md/git-bug_bridge_configure.md | 35 +++++++------
5 files changed, 121 insertions(+), 64 deletions(-)

Detailed changes

bridge/core/bridge.go 🔗

@@ -90,6 +90,7 @@ func ValidParams(target string) ([]string, error) {
 		return nil, fmt.Errorf("unknown bridge target %v", target)
 	}
 
+	sort.Strings(validParams)
 	return validParams, nil
 }
 

commands/bridge_configure_doc.go 🔗

@@ -37,33 +37,34 @@ Successfully configured bridge: default
 
 # For Github
 git bug bridge configure \
-    --TokenRaw=PLACEHOLDERTEXT \
-    --Owner=PLACEHOLDERTEXT \
-    --Project=PLACEHOLDERTEXT \
-    --URL=PLACEHOLDERTEXT \
-    --Login=PLACEHOLDERTEXT \
-    --CredPrefix=PLACEHOLDERTEXT \
+    --target=github \
+    --login=$(LOGIN) \
+    --owner=$(OWNER) \
+    --project=$(PROJECT) \
+    --token=$(TOKEN) \
+    --url=$(URL) \
 
 
 # For Gitlab
 git bug bridge configure \
-    --Login=PLACEHOLDERTEXT \
-    --CredPrefix=PLACEHOLDERTEXT \
-    --TokenRaw=PLACEHOLDERTEXT \
-    --URL=PLACEHOLDERTEXT \
-    --BaseURL=PLACEHOLDERTEXT \
+    --target=gitlab \
+    --base-url=$(BASE_URL) \
+    --login=$(LOGIN) \
+    --token=$(TOKEN) \
+    --url=$(URL) \
 
 
 # For Jira
 git bug bridge configure \
-    --BaseURL=PLACEHOLDERTEXT \
-    --Login=PLACEHOLDERTEXT \
-    --CredPrefix=PLACEHOLDERTEXT \
-    --Project=PLACEHOLDERTEXT \
+    --target=jira \
+    --base-url=$(BASE_URL) \
+    --login=$(LOGIN) \
+    --project=$(PROJECT) \
 
 
 # For Launchpad-Preview
 git bug bridge configure \
-    --URL=PLACEHOLDERTEXT \
-    --Project=PLACEHOLDERTEXT \
+    --target=launchpad-preview \
+    --project=$(PROJECT) \
+    --url=$(URL) \
 `

doc/gen_docs.go 🔗

@@ -8,7 +8,7 @@ import (
 	"strings"
 	"time"
 
-	"github.com/go-errors/errors"
+	"github.com/pkg/errors"
 	"github.com/spf13/cobra/doc"
 
 	"github.com/MichaelMure/git-bug/bridge"
@@ -45,6 +45,36 @@ func main() {
 	// wg.Wait()
 }
 
+// If a flag is not listed in flagInfos, docs will generate the default values for the flag:
+// flagName = lowercase name
+// defaultVal = $({uppercase name})
+// paramConflicts = none
+var flagInfos = map[string]BridgeFlagInfo{
+	"BaseURL": {
+		flagName:       "base-url",
+		defaultVal:     "$(BASE_URL)",
+		paramConflicts: []string{},
+	},
+	"CredPrefix": {
+		flagName:   "credential",
+		defaultVal: "$(CREDENTIALS)",
+		paramConflicts: []string{
+			"TokenRaw",
+		},
+	},
+	"TokenRaw": {
+		flagName:       "token",
+		defaultVal:     "$(TOKEN)",
+		paramConflicts: []string{},
+	},
+}
+
+type BridgeFlagInfo struct {
+	flagName       string
+	defaultVal     string
+	paramConflicts []string
+}
+
 func genBridgeConfig() error {
 	var exampleText strings.Builder
 	exampleText.WriteString("`")
@@ -85,24 +115,47 @@ Successfully configured bridge: default
 	targets := bridge.Targets()
 	for i, b := range targets {
 		if i != 0 {
-			_, err := exampleText.WriteString("\n\n")
-			if err != nil {
-				return err
-			}
-		}
-		_, err := fmt.Fprintf(&exampleText, "# For %s\ngit bug bridge configure \\\n", strings.Title(strings.Split(b, ".")[0]))
-		if err != nil {
-			return err
+			exampleText.WriteString("\n\n")
 		}
+		exampleText.WriteString("# For ")
+		exampleText.WriteString(strings.Title(b))
+		exampleText.WriteString("\ngit bug bridge configure \\\n")
+
+		exampleText.WriteString("    --target=")
+		exampleText.WriteString(strings.ToLower(b))
+		exampleText.WriteString(" \\\n")
+
 		params, err := bridge.ValidParams(b)
 		if err != nil {
-			return errors.WrapPrefix(err, "bridge parameters", 0)
+			return errors.Wrap(err, "bridge parameters")
 		}
+
+	OUTER:
 		for _, param := range params {
-			_, err = fmt.Fprintf(&exampleText, "    --%s=PLACEHOLDERTEXT \\\n", param)
-			if err != nil {
-				return err
+			if flagInfo, ok := flagInfos[param]; ok {
+				if len(flagInfo.paramConflicts) != 0 {
+					for p := range params {
+						for conflict := range flagInfo.paramConflicts {
+							if p == conflict {
+								continue OUTER
+							}
+						}
+					}
+				}
+
+				exampleText.WriteString("    --")
+				exampleText.WriteString(flagInfo.flagName)
+				exampleText.WriteRune('=')
+				exampleText.WriteString(flagInfo.defaultVal)
+			} else {
+				exampleText.WriteString("    --")
+				exampleText.WriteString(strings.ToLower(param))
+				exampleText.WriteString("=$(")
+				exampleText.WriteString(strings.ToUpper(strings.ReplaceAll(param, "-", "_")))
+				exampleText.WriteRune(')')
 			}
+
+			exampleText.WriteString(" \\\n")
 		}
 	}
 	exampleText.WriteString("`")

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

@@ -109,35 +109,36 @@ Successfully configured bridge: default
 
 # For Github
 git bug bridge configure \\
-    \-\-URL= \\
-    \-\-Login= \\
-    \-\-CredPrefix= \\
-    \-\-TokenRaw= \\
-    \-\-Owner= \\
-    \-\-Project= \\
+    \-\-target=github \\
+    \-\-login=$(LOGIN) \\
+    \-\-owner=$(OWNER) \\
+    \-\-project=$(PROJECT) \\
+    \-\-token=$(TOKEN) \\
+    \-\-url=$(URL) \\
 
 
 # For Gitlab
 git bug bridge configure \\
-    \-\-BaseURL= \\
-    \-\-Login= \\
-    \-\-CredPrefix= \\
-    \-\-TokenRaw= \\
-    \-\-URL= \\
+    \-\-target=gitlab \\
+    \-\-base\-url=$(BASE URL) \\
+    \-\-login=$(LOGIN) \\
+    \-\-token=$(TOKEN) \\
+    \-\-url=$(URL) \\
 
 
 # For Jira
 git bug bridge configure \\
-    \-\-Project= \\
-    \-\-BaseURL= \\
-    \-\-Login= \\
-    \-\-CredPrefix= \\
+    \-\-target=jira \\
+    \-\-base\-url=$(BASE URL) \\
+    \-\-login=$(LOGIN) \\
+    \-\-project=$(PROJECT) \\
 
 
 # For Launchpad\-Preview
 git bug bridge configure \\
-    \-\-URL= \\
-    \-\-Project= \\
+    \-\-target=launchpad\-preview \\
+    \-\-project=$(PROJECT) \\
+    \-\-url=$(URL) \\
 
 
 .fi

doc/md/git-bug_bridge_configure.md 🔗

@@ -48,35 +48,36 @@ Successfully configured bridge: default
 
 # For Github
 git bug bridge configure \
-    --URL= \
-    --Login= \
-    --CredPrefix= \
-    --TokenRaw= \
-    --Owner= \
-    --Project= \
+    --target=github \
+    --login=$(LOGIN) \
+    --owner=$(OWNER) \
+    --project=$(PROJECT) \
+    --token=$(TOKEN) \
+    --url=$(URL) \
 
 
 # For Gitlab
 git bug bridge configure \
-    --BaseURL= \
-    --Login= \
-    --CredPrefix= \
-    --TokenRaw= \
-    --URL= \
+    --target=gitlab \
+    --base-url=$(BASE URL) \
+    --login=$(LOGIN) \
+    --token=$(TOKEN) \
+    --url=$(URL) \
 
 
 # For Jira
 git bug bridge configure \
-    --Project= \
-    --BaseURL= \
-    --Login= \
-    --CredPrefix= \
+    --target=jira \
+    --base-url=$(BASE URL) \
+    --login=$(LOGIN) \
+    --project=$(PROJECT) \
 
 
 # For Launchpad-Preview
 git bug bridge configure \
-    --URL= \
-    --Project= \
+    --target=launchpad-preview \
+    --project=$(PROJECT) \
+    --url=$(URL) \
 
 ```