From fa91e11105d94776ba346ae04686a532433d6e0c Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 8 Jun 2023 17:14:42 +0300 Subject: [PATCH] fix(cli/help): show deprecation notice properly for flags (#7904) --- cli/help.go | 25 +++++++++++++++++++++++++ cli/help.tpl | 2 +- cli/testdata/coder_ssh_--help.golden | 3 ++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/cli/help.go b/cli/help.go index 6fb5066a15..fa813febc5 100644 --- a/cli/help.go +++ b/cli/help.go @@ -135,6 +135,31 @@ var usageTemplate = template.Must( "isDeprecated": func(opt clibase.Option) bool { return len(opt.UseInstead) > 0 }, + "useInstead": func(opt clibase.Option) string { + var sb strings.Builder + for i, s := range opt.UseInstead { + if i > 0 { + if i == len(opt.UseInstead)-1 { + _, _ = sb.WriteString(" and ") + } else { + _, _ = sb.WriteString(", ") + } + } + if s.Flag != "" { + _, _ = sb.WriteString("--") + _, _ = sb.WriteString(s.Flag) + } else if s.FlagShorthand != "" { + _, _ = sb.WriteString("-") + _, _ = sb.WriteString(s.FlagShorthand) + } else if s.Env != "" { + _, _ = sb.WriteString("$") + _, _ = sb.WriteString(s.Env) + } else { + _, _ = sb.WriteString(s.Name) + } + } + return sb.String() + }, "formatLong": func(long string) string { // We intentionally don't wrap here because it would misformat // examples, where the new line would start without the prior diff --git a/cli/help.tpl b/cli/help.tpl index b464cbb248..97d79db936 100644 --- a/cli/help.tpl +++ b/cli/help.tpl @@ -43,7 +43,7 @@ Usage: {{.FullUsage}} {{- with $option.Description }} {{- $desc := $option.Description }} {{ indent $desc 10 }} -{{- if isDeprecated $option }} DEPRECATED {{ end }} +{{- if isDeprecated $option }}{{ indent (printf "DEPRECATED: Use %s instead." (useInstead $option)) 10 }}{{ end }} {{- end -}} {{- end }} {{- end }} diff --git a/cli/testdata/coder_ssh_--help.golden b/cli/testdata/coder_ssh_--help.golden index 4880365501..890c08e1e5 100644 --- a/cli/testdata/coder_ssh_--help.golden +++ b/cli/testdata/coder_ssh_--help.golden @@ -28,7 +28,8 @@ Start a shell into a workspace Enter workspace immediately after the agent has connected. This is the default if the template has configured the agent startup script behavior as non-blocking. - DEPRECATED + DEPRECATED: Use --wait instead. + --stdio bool, $CODER_SSH_STDIO Specifies whether to emit SSH output over stdin/stdout.