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
}
vince created
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(-)
@@ -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
}
@@ -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) \
`
@@ -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("`")
@@ -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
@@ -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) \
```