Merge pull request #1452 from urfave/shift-supported-go
Shift supported go versions
This commit is contained in:
commit
87dedb6d77
16
.github/workflows/cli.yml
vendored
16
.github/workflows/cli.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||
go: [1.16.x, 1.17.x, 1.18.x]
|
||||
go: [1.17.x, 1.18.x, 1.19.x]
|
||||
name: ${{ matrix.os }} @ Go ${{ matrix.go }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
@ -27,12 +27,16 @@ jobs:
|
||||
- name: Set PATH
|
||||
run: echo "${GITHUB_WORKSPACE}/.local/bin" >>"${GITHUB_PATH}"
|
||||
|
||||
- name: install goimports
|
||||
if: matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
||||
run: GOBIN=${PWD}/.local/bin go install golang.org/x/tools/cmd/goimports@latest
|
||||
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: GOFMT Check
|
||||
if: matrix.go == '1.18.x' && matrix.os == 'ubuntu-latest'
|
||||
run: test -z $(gofmt -l .)
|
||||
- name: goimports check
|
||||
if: matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
||||
run: test -z $(goimports -l .)
|
||||
|
||||
- name: vet
|
||||
run: go run internal/build/build.go vet
|
||||
@ -53,7 +57,7 @@ jobs:
|
||||
run: go run internal/build/build.go -tags urfave_cli_no_docs check-binary-size
|
||||
|
||||
- name: Upload coverage to Codecov
|
||||
if: success() && matrix.go == '1.18.x' && matrix.os == 'ubuntu-latest'
|
||||
if: success() && matrix.go == '1.19.x' && matrix.os == 'ubuntu-latest'
|
||||
uses: codecov/codecov-action@v2
|
||||
with:
|
||||
fail_ci_if_error: true
|
||||
@ -65,7 +69,7 @@ jobs:
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v3
|
||||
with:
|
||||
go-version: 1.18.x
|
||||
go-version: 1.19.x
|
||||
|
||||
- name: Use Node.js 16
|
||||
uses: actions/setup-node@v3
|
||||
|
10
.gitignore
vendored
10
.gitignore
vendored
@ -1,11 +1,13 @@
|
||||
*.coverprofile
|
||||
*.exe
|
||||
*.orig
|
||||
vendor
|
||||
.*envrc
|
||||
.envrc
|
||||
.idea
|
||||
internal/*/built-example
|
||||
coverage.txt
|
||||
/.local/
|
||||
/site/
|
||||
coverage.txt
|
||||
internal/*/built-example
|
||||
vendor
|
||||
/cmd/urfave-cli-genflags/urfave-cli-genflags
|
||||
|
||||
*.exe
|
||||
|
30
cli.go
30
cli.go
@ -1,23 +1,25 @@
|
||||
// Package cli provides a minimal framework for creating and organizing command line
|
||||
// Go applications. cli is designed to be easy to understand and write, the most simple
|
||||
// cli application can be written as follows:
|
||||
// func main() {
|
||||
// (&cli.App{}).Run(os.Args)
|
||||
// }
|
||||
//
|
||||
// func main() {
|
||||
// (&cli.App{}).Run(os.Args)
|
||||
// }
|
||||
//
|
||||
// Of course this application does not do much, so let's make this an actual application:
|
||||
// func main() {
|
||||
// app := &cli.App{
|
||||
// Name: "greet",
|
||||
// Usage: "say a greeting",
|
||||
// Action: func(c *cli.Context) error {
|
||||
// fmt.Println("Greetings")
|
||||
// return nil
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// app.Run(os.Args)
|
||||
// }
|
||||
// func main() {
|
||||
// app := &cli.App{
|
||||
// Name: "greet",
|
||||
// Usage: "say a greeting",
|
||||
// Action: func(c *cli.Context) error {
|
||||
// fmt.Println("Greetings")
|
||||
// return nil
|
||||
// },
|
||||
// }
|
||||
//
|
||||
// app.Run(os.Args)
|
||||
// }
|
||||
package cli
|
||||
|
||||
//go:generate go run cmd/urfave-cli-genflags/main.go
|
||||
|
@ -64,8 +64,8 @@ GLOBAL OPTIONS:
|
||||
COPYRIGHT:
|
||||
{{wrap .Copyright 3}}{{end}}
|
||||
`
|
||||
AppHelpTemplate is the text template for the Default help topic. cli.go uses
|
||||
text/template to render templates. You can render custom help text by
|
||||
AppHelpTemplate is the text template for the Default help topic. cli.go
|
||||
uses text/template to render templates. You can render custom help text by
|
||||
setting this variable.
|
||||
|
||||
var CommandHelpTemplate = `NAME:
|
||||
@ -201,9 +201,9 @@ func DefaultAppComplete(cCtx *Context)
|
||||
func DefaultCompleteWithFlags(cmd *Command) func(cCtx *Context)
|
||||
func FlagNames(name string, aliases []string) []string
|
||||
func HandleAction(action interface{}, cCtx *Context) (err error)
|
||||
HandleAction attempts to figure out which Action signature was used. If it's
|
||||
an ActionFunc or a func with the legacy signature for Action, the func is
|
||||
run!
|
||||
HandleAction attempts to figure out which Action signature was used.
|
||||
If it's an ActionFunc or a func with the legacy signature for Action,
|
||||
the func is run!
|
||||
|
||||
func HandleExitCoder(err error)
|
||||
HandleExitCoder handles errors implementing ExitCoder by printing their
|
||||
@ -360,14 +360,14 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error)
|
||||
to generate command-specific flags
|
||||
|
||||
func (a *App) RunContext(ctx context.Context, arguments []string) (err error)
|
||||
RunContext is like Run except it takes a Context that will be passed to its
|
||||
commands and sub-commands. Through this, you can propagate timeouts and
|
||||
RunContext is like Run except it takes a Context that will be passed to
|
||||
its commands and sub-commands. Through this, you can propagate timeouts and
|
||||
cancellation requests
|
||||
|
||||
func (a *App) Setup()
|
||||
Setup runs initialization code to ensure all data structures are ready for
|
||||
`Run` or inspection prior to `Run`. It is internally called by `Run`, but
|
||||
will return early if setup has already happened.
|
||||
Setup runs initialization code to ensure all data structures are ready
|
||||
for `Run` or inspection prior to `Run`. It is internally called by `Run`,
|
||||
but will return early if setup has already happened.
|
||||
|
||||
func (a *App) ToFishCompletion() (string, error)
|
||||
ToFishCompletion creates a fish completion string for the `*App` The
|
||||
@ -799,9 +799,9 @@ func Exit(message interface{}, exitCode int) ExitCoder
|
||||
Exit wraps a message and exit code into an error, which by default is
|
||||
handled with a call to os.Exit during default error handling.
|
||||
|
||||
This is the simplest way to trigger a non-zero exit code for an App without
|
||||
having to call os.Exit manually. During testing, this behavior can be
|
||||
avoided by overiding the ExitErrHandler function on an App or the
|
||||
This is the simplest way to trigger a non-zero exit code for an App
|
||||
without having to call os.Exit manually. During testing, this behavior
|
||||
can be avoided by overiding the ExitErrHandler function on an App or the
|
||||
package-global OsExiter function.
|
||||
|
||||
func NewExitError(message interface{}, exitCode int) ExitCoder
|
||||
@ -1431,8 +1431,8 @@ type MultiInt64Flag = SliceFlag[*Int64SliceFlag, []int64, int64]
|
||||
directly, as Value and/or Destination. See also SliceFlag.
|
||||
|
||||
type MultiIntFlag = SliceFlag[*IntSliceFlag, []int, int]
|
||||
MultiIntFlag extends IntSliceFlag with support for using slices directly, as
|
||||
Value and/or Destination. See also SliceFlag.
|
||||
MultiIntFlag extends IntSliceFlag with support for using slices directly,
|
||||
as Value and/or Destination. See also SliceFlag.
|
||||
|
||||
type MultiStringFlag = SliceFlag[*StringSliceFlag, []string, string]
|
||||
MultiStringFlag extends StringSliceFlag with support for using slices
|
||||
@ -1513,8 +1513,8 @@ type RequiredFlag interface {
|
||||
|
||||
IsRequired() bool
|
||||
}
|
||||
RequiredFlag is an interface that allows us to mark flags as required it
|
||||
allows flags required flags to be backwards compatible with the Flag
|
||||
RequiredFlag is an interface that allows us to mark flags as required
|
||||
it allows flags required flags to be backwards compatible with the Flag
|
||||
interface
|
||||
|
||||
type Serializer interface {
|
||||
@ -1527,9 +1527,9 @@ type SliceFlag[T SliceFlagTarget[E], S ~[]E, E any] struct {
|
||||
Value S
|
||||
Destination *S
|
||||
}
|
||||
SliceFlag extends implementations like StringSliceFlag and IntSliceFlag with
|
||||
support for using slices directly, as Value and/or Destination. See also
|
||||
SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag,
|
||||
SliceFlag extends implementations like StringSliceFlag and IntSliceFlag
|
||||
with support for using slices directly, as Value and/or Destination.
|
||||
See also SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag,
|
||||
MultiIntFlag.
|
||||
|
||||
func (x *SliceFlag[T, S, E]) Apply(set *flag.FlagSet) error
|
||||
@ -1986,9 +1986,9 @@ func InitInputSource(flags []cli.Flag, createInputSource func() (InputSourceCont
|
||||
that are supported by the input source
|
||||
|
||||
func InitInputSourceWithContext(flags []cli.Flag, createInputSource func(cCtx *cli.Context) (InputSourceContext, error)) cli.BeforeFunc
|
||||
InitInputSourceWithContext is used to to setup an InputSourceContext on a
|
||||
cli.Command Before method. It will create a new input source based on the
|
||||
func provided with potentially using existing cli.Context values to
|
||||
InitInputSourceWithContext is used to to setup an InputSourceContext on
|
||||
a cli.Command Before method. It will create a new input source based on
|
||||
the func provided with potentially using existing cli.Context values to
|
||||
initialize itself. If there is no error it will then apply the new input
|
||||
source to any flags that are supported by the input source
|
||||
|
||||
|
46
testdata/godoc-v2.x.txt
vendored
46
testdata/godoc-v2.x.txt
vendored
@ -64,8 +64,8 @@ GLOBAL OPTIONS:
|
||||
COPYRIGHT:
|
||||
{{wrap .Copyright 3}}{{end}}
|
||||
`
|
||||
AppHelpTemplate is the text template for the Default help topic. cli.go uses
|
||||
text/template to render templates. You can render custom help text by
|
||||
AppHelpTemplate is the text template for the Default help topic. cli.go
|
||||
uses text/template to render templates. You can render custom help text by
|
||||
setting this variable.
|
||||
|
||||
var CommandHelpTemplate = `NAME:
|
||||
@ -201,9 +201,9 @@ func DefaultAppComplete(cCtx *Context)
|
||||
func DefaultCompleteWithFlags(cmd *Command) func(cCtx *Context)
|
||||
func FlagNames(name string, aliases []string) []string
|
||||
func HandleAction(action interface{}, cCtx *Context) (err error)
|
||||
HandleAction attempts to figure out which Action signature was used. If it's
|
||||
an ActionFunc or a func with the legacy signature for Action, the func is
|
||||
run!
|
||||
HandleAction attempts to figure out which Action signature was used.
|
||||
If it's an ActionFunc or a func with the legacy signature for Action,
|
||||
the func is run!
|
||||
|
||||
func HandleExitCoder(err error)
|
||||
HandleExitCoder handles errors implementing ExitCoder by printing their
|
||||
@ -360,14 +360,14 @@ func (a *App) RunAsSubcommand(ctx *Context) (err error)
|
||||
to generate command-specific flags
|
||||
|
||||
func (a *App) RunContext(ctx context.Context, arguments []string) (err error)
|
||||
RunContext is like Run except it takes a Context that will be passed to its
|
||||
commands and sub-commands. Through this, you can propagate timeouts and
|
||||
RunContext is like Run except it takes a Context that will be passed to
|
||||
its commands and sub-commands. Through this, you can propagate timeouts and
|
||||
cancellation requests
|
||||
|
||||
func (a *App) Setup()
|
||||
Setup runs initialization code to ensure all data structures are ready for
|
||||
`Run` or inspection prior to `Run`. It is internally called by `Run`, but
|
||||
will return early if setup has already happened.
|
||||
Setup runs initialization code to ensure all data structures are ready
|
||||
for `Run` or inspection prior to `Run`. It is internally called by `Run`,
|
||||
but will return early if setup has already happened.
|
||||
|
||||
func (a *App) ToFishCompletion() (string, error)
|
||||
ToFishCompletion creates a fish completion string for the `*App` The
|
||||
@ -799,9 +799,9 @@ func Exit(message interface{}, exitCode int) ExitCoder
|
||||
Exit wraps a message and exit code into an error, which by default is
|
||||
handled with a call to os.Exit during default error handling.
|
||||
|
||||
This is the simplest way to trigger a non-zero exit code for an App without
|
||||
having to call os.Exit manually. During testing, this behavior can be
|
||||
avoided by overiding the ExitErrHandler function on an App or the
|
||||
This is the simplest way to trigger a non-zero exit code for an App
|
||||
without having to call os.Exit manually. During testing, this behavior
|
||||
can be avoided by overiding the ExitErrHandler function on an App or the
|
||||
package-global OsExiter function.
|
||||
|
||||
func NewExitError(message interface{}, exitCode int) ExitCoder
|
||||
@ -1431,8 +1431,8 @@ type MultiInt64Flag = SliceFlag[*Int64SliceFlag, []int64, int64]
|
||||
directly, as Value and/or Destination. See also SliceFlag.
|
||||
|
||||
type MultiIntFlag = SliceFlag[*IntSliceFlag, []int, int]
|
||||
MultiIntFlag extends IntSliceFlag with support for using slices directly, as
|
||||
Value and/or Destination. See also SliceFlag.
|
||||
MultiIntFlag extends IntSliceFlag with support for using slices directly,
|
||||
as Value and/or Destination. See also SliceFlag.
|
||||
|
||||
type MultiStringFlag = SliceFlag[*StringSliceFlag, []string, string]
|
||||
MultiStringFlag extends StringSliceFlag with support for using slices
|
||||
@ -1513,8 +1513,8 @@ type RequiredFlag interface {
|
||||
|
||||
IsRequired() bool
|
||||
}
|
||||
RequiredFlag is an interface that allows us to mark flags as required it
|
||||
allows flags required flags to be backwards compatible with the Flag
|
||||
RequiredFlag is an interface that allows us to mark flags as required
|
||||
it allows flags required flags to be backwards compatible with the Flag
|
||||
interface
|
||||
|
||||
type Serializer interface {
|
||||
@ -1527,9 +1527,9 @@ type SliceFlag[T SliceFlagTarget[E], S ~[]E, E any] struct {
|
||||
Value S
|
||||
Destination *S
|
||||
}
|
||||
SliceFlag extends implementations like StringSliceFlag and IntSliceFlag with
|
||||
support for using slices directly, as Value and/or Destination. See also
|
||||
SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag,
|
||||
SliceFlag extends implementations like StringSliceFlag and IntSliceFlag
|
||||
with support for using slices directly, as Value and/or Destination.
|
||||
See also SliceFlagTarget, MultiStringFlag, MultiFloat64Flag, MultiInt64Flag,
|
||||
MultiIntFlag.
|
||||
|
||||
func (x *SliceFlag[T, S, E]) Apply(set *flag.FlagSet) error
|
||||
@ -1986,9 +1986,9 @@ func InitInputSource(flags []cli.Flag, createInputSource func() (InputSourceCont
|
||||
that are supported by the input source
|
||||
|
||||
func InitInputSourceWithContext(flags []cli.Flag, createInputSource func(cCtx *cli.Context) (InputSourceContext, error)) cli.BeforeFunc
|
||||
InitInputSourceWithContext is used to to setup an InputSourceContext on a
|
||||
cli.Command Before method. It will create a new input source based on the
|
||||
func provided with potentially using existing cli.Context values to
|
||||
InitInputSourceWithContext is used to to setup an InputSourceContext on
|
||||
a cli.Command Before method. It will create a new input source based on
|
||||
the func provided with potentially using existing cli.Context values to
|
||||
initialize itself. If there is no error it will then apply the new input
|
||||
source to any flags that are supported by the input source
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user