diff options
| author | Eltrac <hi@guhub.cn> | 2025-11-11 11:04:23 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-11-11 11:04:23 +0800 |
| commit | 06dcdf457d25a707f6a25237f09a6e186173bbb7 (patch) | |
| tree | df613d6d5cbbcccb20b4f6cfe64134c3498b3e7d | |
| parent | ff99f193fee8bff9e5fdce39f05d1d95622c360a (diff) | |
refactor: use urfave/cli
| -rw-r--r-- | go.mod | 4 | ||||
| -rw-r--r-- | go.sum | 10 | ||||
| -rw-r--r-- | main.go | 45 |
3 files changed, 39 insertions, 20 deletions
@@ -4,6 +4,10 @@ go 1.25.4 require ( github.com/fatih/color v1.18.0 // direct + github.com/urfave/cli/v3 v3.6.0 // direct +) + +require ( github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect golang.org/x/sys v0.25.0 // indirect @@ -1,3 +1,5 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= @@ -5,7 +7,15 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +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/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/urfave/cli/v3 v3.6.0 h1:oIdArVjkdIXHWg3iqxgmqwQGC8NM0JtdgwQAj2sRwFo= +github.com/urfave/cli/v3 v3.6.0/go.mod h1:ysVLtOEmg2tOy6PknnYVhDoouyC/6N42TMeoMzskhso= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -4,7 +4,10 @@ import ( "fmt" "os" "os/exec" + "context" + "log" "github.com/fatih/color" + "github.com/urfave/cli/v3" ) func main() { @@ -12,28 +15,30 @@ func main() { _, brewInstallationErr := exec.LookPath("brew") if brewInstallationErr != nil { color.Red("🍺 Homebrew not installed.") - fmt.Println("This tool is for looking up formulae/cask information about packages installed with Homebrew. If you don't have Homebrew, it's no use.") - os.Exit(1) + fmt.Println("This tool is for looking up formulae/cask information about packages installed with Homebrew.") + fmt.Println("If you don't have Homebrew, it's no use.") + os.Exit(0) } - args := os.Args - // handle arguments - var printUsage = func() { - color.New(color.FgBlue).Print("Usage: ") - fmt.Print("wthis <package>\n") - } - if len(args) < 2 { - printUsage() - os.Exit(1) - } - if args[1] == "-h" || args[1] == "--help" { - printUsage() - os.Exit(0) + // declare CLI app + cmd := &cli.Command{ + Name: "wthis", + Usage: "Fetch information of a Homebrew formulae or cask, like how it got installed, reverse dependencies, etc.", + Action: func(ctx context.Context, cmd *cli.Command) error { + if cmd.Args().Len() == 0 { + color.Red("❌ Please provide a formulae/cask name.") + fmt.Println("Usage: wthis <name>") + return nil + } + pkgName := cmd.Args().First() + formulae, cask := GetInfo(pkgName) + PrintInfo(formulae, cask, pkgName) + return nil + }, } - pkg := args[1] - // get formulae/cask info - formulae, cask := GetInfo(pkg) - // print info - PrintInfo(formulae, cask, pkg) + // run command and handle error + if err := cmd.Run(context.Background(), os.Args); err != nil { + log.Fatal(err) + } } |
