From 7a35bf8e79a2ebc7c3a989156dca9864f86636d1 Mon Sep 17 00:00:00 2001 From: vince Date: Wed, 22 Jul 2020 11:27:34 +0800 Subject: [PATCH] Format flags correctly --- 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(-) diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go index 21fd86ab39e45d5d5fe4db2d004e34855bacd9c9..c18153c9432917ead4072029903d1442f1b62ba8 100644 --- a/bridge/core/bridge.go +++ b/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 } diff --git a/commands/bridge_configure_doc.go b/commands/bridge_configure_doc.go index bb71665a6a54dda7480116c8debce7d11c458b29..e4e87b852f26c3082a46f2c60629015c12a12857 100644 --- a/commands/bridge_configure_doc.go +++ b/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) \ ` diff --git a/doc/gen_docs.go b/doc/gen_docs.go index aa337598f911ddf6b6d3ab361f8f7d34be4a4083..8a75283539b28cca6d7bc7e6239cc27dc8f23b51 100644 --- a/doc/gen_docs.go +++ b/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("`") diff --git a/doc/man/git-bug-bridge-configure.1 b/doc/man/git-bug-bridge-configure.1 index 45853ad795c17111c515b82075ed1d77a9fcdd6c..73cd44c86583f991ef52f4ff66b0db335efea9da 100644 --- a/doc/man/git-bug-bridge-configure.1 +++ b/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 diff --git a/doc/md/git-bug_bridge_configure.md b/doc/md/git-bug_bridge_configure.md index 922e8dd84d5fb26776b9a240284b3cf96820792f..1e318848a2eb1eeb4d44ac18fa494f0ef5554eee 100644 --- a/doc/md/git-bug_bridge_configure.md +++ b/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) \ ```