Multiple TODO fixes

vince created

This commit hard-codes example URLs into the documentation generator and splits the generator into different functions for easier readability.

Change summary

commands/bridge_configure_doc.go   |  9 +--
doc/gen_docs.go                    | 78 ++++++++++++++++++++++---------
doc/man/git-bug-bridge-configure.1 |  9 +--
doc/md/git-bug_bridge_configure.md |  9 +--
4 files changed, 67 insertions(+), 38 deletions(-)

Detailed changes

commands/bridge_configure_doc.go 🔗

@@ -38,26 +38,25 @@ Successfully configured bridge: default
 # For Github
 git bug bridge configure \
     --target=github \
+    --url=https://github.com/MichaelMure/git-bug \
     --login=$(LOGIN) \
     --owner=$(OWNER) \
     --project=$(PROJECT) \
     --token=$(TOKEN) \
-    --url=$(URL) \
 
 
 # For Gitlab
 git bug bridge configure \
     --target=gitlab \
-    --base-url=$(BASE_URL) \
+    --url=https://gitlab.com/gitlab-org/gitlab \
     --login=$(LOGIN) \
     --token=$(TOKEN) \
-    --url=$(URL) \
 
 
 # For Jira
 git bug bridge configure \
     --target=jira \
-    --base-url=$(BASE_URL) \
+    --url= \
     --login=$(LOGIN) \
     --project=$(PROJECT) \
 
@@ -65,6 +64,6 @@ git bug bridge configure \
 # For Launchpad-Preview
 git bug bridge configure \
     --target=launchpad-preview \
+    --url=https://bugs.launchpad.net/ubuntu/ \
     --project=$(PROJECT) \
-    --url=$(URL) \
 `

doc/gen_docs.go 🔗

@@ -75,6 +75,15 @@ type BridgeFlagInfo struct {
 	paramConflicts []string
 }
 
+var bridgeUrls = map[string]string{
+	"github":            "https://github.com/MichaelMure/git-bug",
+	"gitlab":            "https://gitlab.com/gitlab-org/gitlab",
+	"launchpad-preview": "https://bugs.launchpad.net/ubuntu/",
+	// TODO: Insert URL for Jira Project
+}
+
+// genBridgeConfig generates the bridge configuration documentation on go generate
+// Documentation is stored in commands/bridge_configure_doc.go
 func genBridgeConfig() error {
 	var exampleText strings.Builder
 	exampleText.WriteString("`")
@@ -125,37 +134,26 @@ Successfully configured bridge: default
 		exampleText.WriteString(strings.ToLower(b))
 		exampleText.WriteString(" \\\n")
 
+		exampleText.WriteString("    --url=")
+		exampleText.WriteString(bridgeUrls[b])
+		exampleText.WriteString(" \\\n")
+
 		params, err := bridge.ValidParams(b)
 		if err != nil {
 			return errors.Wrap(err, "bridge parameters")
 		}
 
-	OUTER:
 		for _, param := range params {
-			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(')')
+			if param == "URL" || param == "BaseURL" {
+				continue
+			}
+
+			paramString := formatParam(param, params)
+			if paramString == "" {
+				continue
 			}
 
-			exampleText.WriteString(" \\\n")
+			exampleText.WriteString(paramString)
 		}
 	}
 	exampleText.WriteString("`")
@@ -184,6 +182,40 @@ var bridgeConfigureExample =`)
 	return nil
 }
 
+// formatParam formats a parameter into a flag example in the command line
+func formatParam(param string, params []string) string {
+	paramString := "    --"
+	if flagInfo, ok := flagInfos[param]; ok {
+		if checkParamConflicts(flagInfo.paramConflicts, params) {
+			return ""
+		}
+
+		paramString += flagInfo.flagName + "=" + flagInfo.defaultVal
+	} else {
+		paramString += strings.ToLower(param) + "=$(" + strings.ToUpper(param) + ")"
+	}
+
+	paramString += " \\\n"
+	return paramString
+}
+
+// checkParamConflicts checks the parameter conflicts against the list of present parameters
+// If a conflict is found, it returns true. Otherwise, it returns false
+func checkParamConflicts(paramConflicts []string, params []string) bool {
+	if len(paramConflicts) == 0 {
+		return false
+	}
+
+	for p := range params {
+		for conflict := range paramConflicts {
+			if p == conflict {
+				return true
+			}
+		}
+	}
+	return false
+}
+
 func genManPage() error {
 	cwd, _ := os.Getwd()
 	dir := path.Join(cwd, "doc", "man")

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

@@ -110,26 +110,25 @@ Successfully configured bridge: default
 # For Github
 git bug bridge configure \\
     \-\-target=github \\
+    \-\-url=https://github.com/MichaelMure/git\-bug \\
     \-\-login=$(LOGIN) \\
     \-\-owner=$(OWNER) \\
     \-\-project=$(PROJECT) \\
     \-\-token=$(TOKEN) \\
-    \-\-url=$(URL) \\
 
 
 # For Gitlab
 git bug bridge configure \\
     \-\-target=gitlab \\
-    \-\-base\-url=$(BASE URL) \\
+    \-\-url=https://gitlab.com/gitlab\-org/gitlab \\
     \-\-login=$(LOGIN) \\
     \-\-token=$(TOKEN) \\
-    \-\-url=$(URL) \\
 
 
 # For Jira
 git bug bridge configure \\
     \-\-target=jira \\
-    \-\-base\-url=$(BASE URL) \\
+    \-\-url= \\
     \-\-login=$(LOGIN) \\
     \-\-project=$(PROJECT) \\
 
@@ -137,8 +136,8 @@ git bug bridge configure \\
 # For Launchpad\-Preview
 git bug bridge configure \\
     \-\-target=launchpad\-preview \\
+    \-\-url=https://bugs.launchpad.net/ubuntu/ \\
     \-\-project=$(PROJECT) \\
-    \-\-url=$(URL) \\
 
 
 .fi

doc/md/git-bug_bridge_configure.md 🔗

@@ -49,26 +49,25 @@ Successfully configured bridge: default
 # For Github
 git bug bridge configure \
     --target=github \
+    --url=https://github.com/MichaelMure/git-bug \
     --login=$(LOGIN) \
     --owner=$(OWNER) \
     --project=$(PROJECT) \
     --token=$(TOKEN) \
-    --url=$(URL) \
 
 
 # For Gitlab
 git bug bridge configure \
     --target=gitlab \
-    --base-url=$(BASE URL) \
+    --url=https://gitlab.com/gitlab-org/gitlab \
     --login=$(LOGIN) \
     --token=$(TOKEN) \
-    --url=$(URL) \
 
 
 # For Jira
 git bug bridge configure \
     --target=jira \
-    --base-url=$(BASE URL) \
+    --url= \
     --login=$(LOGIN) \
     --project=$(PROJECT) \
 
@@ -76,8 +75,8 @@ git bug bridge configure \
 # For Launchpad-Preview
 git bug bridge configure \
     --target=launchpad-preview \
+    --url=https://bugs.launchpad.net/ubuntu/ \
     --project=$(PROJECT) \
-    --url=$(URL) \
 
 ```