feat: flags from gofmt
parent
878278b0d2
commit
90e43ed163
|
@ -0,0 +1,7 @@
|
|||
package main
|
||||
|
||||
import "github.com/haunt98/gofimports/internal/cli"
|
||||
|
||||
func main() {
|
||||
cli.NewApp().Run()
|
||||
}
|
15
go.mod
15
go.mod
|
@ -1,3 +1,18 @@
|
|||
module github.com/haunt98/gofimports
|
||||
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/make-go-great/color-go v0.4.1
|
||||
github.com/urfave/cli/v2 v2.23.5
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
|
||||
github.com/fatih/color v1.13.0 // indirect
|
||||
github.com/mattn/go-colorable v0.1.9 // indirect
|
||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
|
||||
)
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
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/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||
github.com/make-go-great/color-go v0.4.1 h1:4HIat5r1oQneu5BSDUjHKN/9x4Ay2qEEkswdOgk/VRY=
|
||||
github.com/make-go-great/color-go v0.4.1/go.mod h1:G5G8IJ3PUo+vSQ+UvnfaswF8O/piVIhFJKv1mQjBGpI=
|
||||
github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
|
||||
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
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/urfave/cli/v2 v2.23.5 h1:xbrU7tAYviSpqeR3X4nEFWUdB/uDZ6DE+HxmRU7Xtyw=
|
||||
github.com/urfave/cli/v2 v2.23.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
|
||||
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/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
|
@ -0,0 +1,38 @@
|
|||
package cli
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
type action struct {
|
||||
flags struct {
|
||||
list bool
|
||||
write bool
|
||||
diff bool
|
||||
}
|
||||
}
|
||||
|
||||
func (a *action) RunHelp(c *cli.Context) error {
|
||||
return cli.ShowAppHelp(c)
|
||||
}
|
||||
|
||||
func (a *action) getFlags(c *cli.Context) {
|
||||
a.flags.list = c.Bool(flagListName)
|
||||
a.flags.write = c.Bool(flagWriteName)
|
||||
a.flags.diff = c.Bool(flagDiffName)
|
||||
}
|
||||
|
||||
func (a *action) Run(c *cli.Context) error {
|
||||
a.getFlags(c)
|
||||
|
||||
if !a.flags.write &&
|
||||
!a.flags.diff {
|
||||
a.RunHelp(c)
|
||||
fmt.Println("Error: -w or -d must required one")
|
||||
return nil
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
package cli
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/make-go-great/color-go"
|
||||
"github.com/urfave/cli/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
name = "gofimports"
|
||||
usage = "goimports with my opinionated preferences"
|
||||
|
||||
// Inspiration from gofmt flags
|
||||
flagListName = "list"
|
||||
flagListUsage = "list files will be changed"
|
||||
|
||||
flagWriteName = "write"
|
||||
flagWriteUsage = "actually write changes to (source) files"
|
||||
|
||||
// If both write and diff is exist
|
||||
// Choose diff
|
||||
flagDiffName = "diff"
|
||||
flagDiffUsage = "show diff instead of writing changes"
|
||||
)
|
||||
|
||||
var (
|
||||
flagListAliases = []string{"l"}
|
||||
flagWriteAliases = []string{"w"}
|
||||
flagDiffAliases = []string{"d"}
|
||||
)
|
||||
|
||||
type App struct {
|
||||
cliApp *cli.App
|
||||
}
|
||||
|
||||
func NewApp() *App {
|
||||
a := &action{}
|
||||
|
||||
cliApp := &cli.App{
|
||||
Name: name,
|
||||
Usage: usage,
|
||||
Flags: []cli.Flag{
|
||||
&cli.BoolFlag{
|
||||
Name: flagListName,
|
||||
Usage: flagListUsage,
|
||||
Aliases: flagListAliases,
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: flagWriteName,
|
||||
Usage: flagWriteUsage,
|
||||
Aliases: flagWriteAliases,
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: flagDiffName,
|
||||
Usage: flagDiffUsage,
|
||||
Aliases: flagDiffAliases,
|
||||
},
|
||||
},
|
||||
Action: a.Run,
|
||||
}
|
||||
|
||||
return &App{
|
||||
cliApp: cliApp,
|
||||
}
|
||||
}
|
||||
|
||||
func (a *App) Run() {
|
||||
if err := a.cliApp.Run(os.Args); err != nil {
|
||||
color.PrintAppError(name, err.Error())
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue