urfave / cli

A simple, fast, and fun package for building command line apps in Go
https://cli.urfave.org
MIT License
22.22k stars 1.7k forks source link

Using the `app help <subcommand>` doesn't show the default values for flags #1808

Closed smbl64 closed 10 months ago

smbl64 commented 1 year ago

My urfave/cli version is

v2.25.7

Checklist

Dependency Management

Describe the bug

When a command's flags have their Value set, app help <subcommand> doesn't show those default values, while app <subcommand> --help works correctly.

To reproduce

  1. Create a command with flags that have default values.
  2. Use app help <command> to produce a help output.

Observed behavior

app help <command> shows zero values for the flags.

Expected behavior

app help <command> must show the default values set for those flags.

Additional context

I have created a sample program on Go playground.

These are the outputs that I get when generating help:

$ go run . help greet
NAME:
   hello greet - Greets you with your age

USAGE:
   hello greet [command options] [arguments...]

OPTIONS:
   --name value
   --age value   (default: 0)
   --help, -h    show help

$ go run . greet -h
NAME:
   hello greet - Greets you with your age

USAGE:
   hello greet [command options] [arguments...]

OPTIONS:
   --name value  (default: "Foo")
   --age value   (default: 40)
   --help, -h    show help

Want to fix this yourself?

We'd love to have more contributors on this project! If the fix for this bug is easily explained and very small, feel free to create a pull request for it.

Run go version and paste its output here

go version go1.21.0 darwin/arm64

Run go env and paste its output here

GO111MODULE=''
GOARCH='arm64'
GOBIN=''
GOCACHE='/Users/mohammad/Library/Caches/go-build'
GOENV='/Users/mohammad/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/mohammad/go/pkg/mod'
GOOS='darwin'
GOPATH='/Users/mohammad/go'
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/mohammad/.local/share/rtx/installs/go/1.21.0/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/mohammad/.local/share/rtx/installs/go/1.21.0/go/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.21.0'
GCCGO='gccgo'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/private/tmp/cli_test/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/7l/4xj8m_w94qd0m1hl_z03bljc0000gp/T/go-build383094992=/tmp/go-build -gno-record-gcc-switches -fno-common'
dearchap commented 10 months ago

@smbl64 Please try the PR fix

smbl64 commented 10 months ago

Thank you @dearchap! The problem is resolved 🙂