From 8156d742f5932199634bd7b6405b68387abec6a2 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Mon, 3 Apr 2023 11:51:25 +0800 Subject: [PATCH] Update to urfave/cli/v3 (#77) This allows for persistent flags, such that `changelog -m v0.4.0 generate` and `changelog generate -m v0.4.0` are equivalent. Reviewed-on: https://gitea.com/gitea/changelog/pulls/77 Reviewed-by: 6543 <6543@obermui.de> Reviewed-by: Lunny Xiao Co-authored-by: jolheiser Co-committed-by: jolheiser --- cmd/cmd.go | 37 ++++++++++--------------------------- cmd/contributors.go | 2 +- cmd/generate.go | 2 +- cmd/init.go | 2 +- go.mod | 8 ++++---- go.sum | 18 ++++++++---------- 6 files changed, 25 insertions(+), 44 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index 77e869b..3ddaf64 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -8,7 +8,7 @@ import ( "os" "path/filepath" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" ) var ( @@ -24,6 +24,8 @@ var ( ) // New returns a new changelog App +// +//nolint:funlen func New() *cli.App { app := &cli.App{ Name: "changelog", @@ -35,12 +37,14 @@ func New() *cli.App { Aliases: []string{"m"}, Usage: "Targeted milestone", Destination: &milestoneFlag, + Persistent: true, }, &cli.StringFlag{ Name: "tag", Aliases: []string{"T"}, Usage: "Git tag for milestone url, if not set milestone is used", Destination: &tagFlag, + Persistent: true, }, &cli.StringFlag{ Name: "config", @@ -48,30 +52,35 @@ func New() *cli.App { Usage: "Specify a config file", Value: getDefaultConfigFile(), Destination: &configPathFlag, + Persistent: true, }, &cli.StringFlag{ Name: "token", Aliases: []string{"t"}, Usage: "Access token for private repositories/instances", Destination: &tokenFlag, + Persistent: true, }, &cli.BoolFlag{ Name: "details", Aliases: []string{"d"}, Usage: "Generate detail lists instead of long lists", Destination: &detailsFlag, + Persistent: true, }, &cli.Int64Flag{ Name: "after", Aliases: []string{"a"}, Usage: "Only select PRs after a given index (continuing a previous changelog)", Destination: &afterFlag, + Persistent: true, }, &cli.BoolFlag{ Name: "issues", Aliases: []string{"i"}, Usage: "Generate changelog from issues (otherwise from pulls)", Destination: &issuesFlag, + Persistent: true, }, }, Commands: []*cli.Command{ @@ -80,7 +89,6 @@ func New() *cli.App { Init, }, } - copyGlobalFlags(app) return app } @@ -96,28 +104,3 @@ func getDefaultConfigFile() string { } return "" } - -func copyGlobalFlags(app *cli.App) { - for _, command := range app.Commands { - originalFlagNames := make([]string, 0, len(command.Flags)) - for _, flag := range command.Flags { - originalFlagNames = append(originalFlagNames, flag.Names()...) - } - - for _, flag := range app.Flags { - found := false - flagNameLoop: - for _, name := range flag.Names() { - for _, originalName := range originalFlagNames { - if name == originalName { - found = true - break flagNameLoop - } - } - } - if !found { - command.Flags = append(command.Flags, flag) - } - } - } -} diff --git a/cmd/contributors.go b/cmd/contributors.go index fbed4d9..2a06001 100644 --- a/cmd/contributors.go +++ b/cmd/contributors.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/changelog/config" "code.gitea.io/changelog/service" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" ) var Contributors = &cli.Command{ diff --git a/cmd/generate.go b/cmd/generate.go index 9da8178..39aff8e 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -12,7 +12,7 @@ import ( "code.gitea.io/changelog/config" "code.gitea.io/changelog/service" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" ) var Generate = &cli.Command{ diff --git a/cmd/init.go b/cmd/init.go index 629a155..9aaa3a5 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -11,7 +11,7 @@ import ( "code.gitea.io/changelog/config" - "github.com/urfave/cli/v2" + "github.com/urfave/cli/v3" ) var ( diff --git a/go.mod b/go.mod index 15b0fbc..689515b 100644 --- a/go.mod +++ b/go.mod @@ -5,18 +5,18 @@ go 1.18 require ( code.gitea.io/sdk/gitea v0.14.0 github.com/google/go-github/v50 v50.0.0 - github.com/urfave/cli/v2 v2.2.0 + github.com/urfave/cli/v3 v3.0.0-alpha2 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be gopkg.in/yaml.v2 v2.3.0 ) require ( - github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/golang/protobuf v1.3.2 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/hashicorp/go-version v1.2.1 // indirect - github.com/russross/blackfriday/v2 v2.0.1 // indirect - github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index 09a7632..58d0610 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,7 @@ code.gitea.io/sdk/gitea v0.14.0 h1:m4J352I3p9+bmJUfS+g0odeQzBY/5OXP91Gv6D4fnJ0= code.gitea.io/sdk/gitea v0.14.0/go.mod h1:89WiyOX1KEcvjP66sRHdu0RafojGo60bT9UqW17VbWs= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -19,15 +17,15 @@ github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pB github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/urfave/cli/v2 v2.2.0 h1:JTTnM6wKzdA0Jqodd966MVj4vWbbquZykeX1sKbe2C4= -github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= +github.com/urfave/cli/v3 v3.0.0-alpha2 h1:JKkuTewMlS2leTQeAcsPGL7WmBVa2uoBLy89As4Jauc= +github.com/urfave/cli/v3 v3.0.0-alpha2/go.mod h1:gHI/xEYplFhOa3Y90xJleh3kqqsSanBj/19hVFxiVZ4= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=