diff --git a/utils/cobrautil/templates/help_flags_printer.go b/utils/cobrautil/templates/help_flags_printer.go
index 7dae1d34..a819e138 100644
--- a/utils/cobrautil/templates/help_flags_printer.go
+++ b/utils/cobrautil/templates/help_flags_printer.go
@@ -59,25 +59,33 @@ func (p *HelpFlagPrinter) PrintHelpFlag(flag *flag.Flag) {
// It always has at least 2 elements.
flagStr, usage := flagAndUsage[0], strings.Join(flagAndUsage[1:], " ")
-
- usage = strings.ReplaceAll(usage, "
", "\n")
- usage = strings.ReplaceAll(usage, "
", "")
- usage = strings.ReplaceAll(usage, "- ", "\n- ")
- usage = strings.ReplaceAll(usage, "
", "\n\n")
- usage = strings.ReplaceAll(usage, "", "")
- usage = strings.ReplaceAll(usage, "
", "")
- usage = strings.ReplaceAll(usage, "", "\"")
- usage = strings.ReplaceAll(usage, "", "\"")
+ usage = p.replaceHTML(usage)
usage = withLinks(usage)
- usage = strings.TrimSpace(usage)
-
usage = wordwrap.WrapString(usage, p.wrapLimit-offset)
+
wrappedStr = flagStr + "\n" + usage
appendTabStr := strings.ReplaceAll(wrappedStr, "\n", "\n\t")
fmt.Fprintf(p.out, appendTabStr+"\n\n")
}
+func (p *HelpFlagPrinter) replaceHTML(s string) string {
+ r := strings.NewReplacer(
+ "
", "\n",
+ "", "\n\n",
+ "", "",
+ "
", "",
+ "", "\"",
+ "", "\"",
+ )
+
+ s = r.Replace(s)
+ s = strings.TrimSpace(s)
+ return s
+}
+
// writeFlag will output the help flag based
// on the format provided by getFlagFormat to i/o writer
func writeFlag(out io.Writer, f *flag.Flag, envPrefix string) {
diff --git a/utils/cobrautil/templates/markdown_flag_printer.go b/utils/cobrautil/templates/markdown_flag_printer.go
index 31b198f9..1a71a907 100644
--- a/utils/cobrautil/templates/markdown_flag_printer.go
+++ b/utils/cobrautil/templates/markdown_flag_printer.go
@@ -33,22 +33,31 @@ func (p *MarkdownFlagPrinter) PrintHelpFlag(f *pflag.Flag) {
fmt.Fprint(p.out, "\n\n")
body := p.body(f)
- body = strings.ReplaceAll(body, ". ", ".\n")
- body = strings.ReplaceAll(body, "
", "\n")
- body = strings.ReplaceAll(body, "", "\n")
- body = strings.ReplaceAll(body, "- ", "\n- ")
- body = strings.ReplaceAll(body, "
", "\n\n")
- body = strings.ReplaceAll(body, "", "`")
- body = strings.ReplaceAll(body, "
", "`")
- body = strings.ReplaceAll(body, "", "\n```\n")
- body = strings.ReplaceAll(body, "", "\n```\n")
+ body = p.replaceHTML(body)
body = withMarkdownLinks(body)
- body = strings.TrimSpace(body)
fmt.Fprintf(p.out, body)
fmt.Fprintf(p.out, "\n\n")
}
+func (p *MarkdownFlagPrinter) replaceHTML(s string) string {
+ r := strings.NewReplacer(
+ ". ", ".\n",
+ "
", "\n",
+ "", "\n",
+ "- ", "\n- ",
+ "
", "\n\n",
+ "", "`",
+ "
", "`",
+ "", "\n```\n",
+ "", "\n```\n",
+ )
+
+ s = r.Replace(s)
+ s = strings.TrimSpace(s)
+ return s
+}
+
func withMarkdownLinks(s string) string {
re := regexp.MustCompile(linkPattern)
diff --git a/utils/cobrautil/templates/yaml_flag_printer.go b/utils/cobrautil/templates/yaml_flag_printer.go
index 5222ad2b..c2ca9043 100644
--- a/utils/cobrautil/templates/yaml_flag_printer.go
+++ b/utils/cobrautil/templates/yaml_flag_printer.go
@@ -30,16 +30,8 @@ func NewYamlFlagPrinter(out io.Writer, wrapLimit uint) *YamlFlagPrinter {
func (p *YamlFlagPrinter) PrintHelpFlag(f *pflag.Flag) {
name, usage := flagNameAndUsage(f)
- usage = strings.ReplaceAll(usage, "
", "\n")
- usage = strings.ReplaceAll(usage, "", "")
- usage = strings.ReplaceAll(usage, "- ", "\n- ")
- usage = strings.ReplaceAll(usage, "
", "\n\n")
- usage = strings.ReplaceAll(usage, "", "")
- usage = strings.ReplaceAll(usage, "
", "")
- usage = strings.ReplaceAll(usage, "", "\"")
- usage = strings.ReplaceAll(usage, "", "\"")
+ usage = p.replaceHTML(usage)
usage = withLinks(usage)
- usage = strings.TrimSpace(usage)
fmt.Fprintf(p.out, "# %s%s\n#\n", f.Name, name)
for _, l := range strings.Split(wordwrap.WrapString(usage, p.wrapLimit-2), "\n") {
@@ -51,6 +43,23 @@ func (p *YamlFlagPrinter) PrintHelpFlag(f *pflag.Flag) {
fmt.Fprintf(p.out, "#%s: %s\n\n", f.Name, p.defaultValue(f))
}
+func (p *YamlFlagPrinter) replaceHTML(s string) string {
+ r := strings.NewReplacer(
+ "
", "\n",
+ "", "\n\n",
+ "", "",
+ "
", "",
+ "", "\"",
+ "", "\"",
+ )
+
+ s = r.Replace(s)
+ s = strings.TrimSpace(s)
+ return s
+}
+
func (p *YamlFlagPrinter) defaultValue(f *pflag.Flag) string {
def := f.DefValue
if def == "[]" {