3df9a3cd86
strings.Split(s, sep) returns a slice of a single element containing s if sep is not found in s. This is true even if s is empty. As a result, every call to flagFromEnvOrFile results in an attempt to open a file with empty name. This is seen from strace as [pid 3287620] openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) [pid 3287620] openat(AT_FDCWD, "", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) ... To fix, check if the string is empty before calling ReadFile. This also fixes cases where filePath is non-empty but has extra commas. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> |
||
---|---|---|
.github | ||
altsrc | ||
autocomplete | ||
docs | ||
internal | ||
testdata | ||
.flake8 | ||
.gitignore | ||
app_test.go | ||
app.go | ||
args.go | ||
category.go | ||
cli.go | ||
CODE_OF_CONDUCT.md | ||
command_test.go | ||
command.go | ||
context_test.go | ||
context.go | ||
docs_test.go | ||
docs.go | ||
errors_test.go | ||
errors.go | ||
fish_test.go | ||
fish.go | ||
flag_bool.go | ||
flag_duration.go | ||
flag_float64_slice.go | ||
flag_float64.go | ||
flag_generic.go | ||
flag_int64_slice.go | ||
flag_int64.go | ||
flag_int_slice.go | ||
flag_int.go | ||
flag_path.go | ||
flag_string_slice.go | ||
flag_string.go | ||
flag_test.go | ||
flag_timestamp.go | ||
flag_uint64.go | ||
flag_uint.go | ||
flag.go | ||
funcs.go | ||
go.mod | ||
go.sum | ||
help_test.go | ||
help.go | ||
helpers_test.go | ||
LICENSE | ||
parse.go | ||
README.md | ||
sort_test.go | ||
sort.go | ||
template.go |
cli
cli is a simple, fast, and fun package for building command line apps in Go. The goal is to enable developers to write fast and distributable command line applications in an expressive way.
Usage Documentation
Usage documentation exists for each major version. Don't know what version you're on? You're probably using the version from the master
branch, which is currently v2
.
v2
- ./docs/v2/manual.mdv1
- ./docs/v1/manual.md
Guides for migrating to newer versions:
v1-to-v2
- ./docs/migrate-v1-to-v2.md
Installation
Using this package requires a working Go environment. See the install instructions for Go.
Go Modules are required when using this package. See the go blog guide on using Go Modules.
Using v2
releases
$ GO111MODULE=on go get github.com/urfave/cli/v2
...
import (
"github.com/urfave/cli/v2" // imports as package "cli"
)
...
Using v1
releases
$ GO111MODULE=on go get github.com/urfave/cli
...
import (
"github.com/urfave/cli"
)
...
GOPATH
Make sure your PATH
includes the $GOPATH/bin
directory so your commands can
be easily used:
export PATH=$PATH:$GOPATH/bin
Supported platforms
cli is tested against multiple versions of Go on Linux, and against the latest released version of Go on OS X and Windows. This project uses Github Actions for builds. To see our currently supported go versions and platforms, look at the ./.github/workflows/cli.yml.