From 06dcdf457d25a707f6a25237f09a6e186173bbb7 Mon Sep 17 00:00:00 2001 From: Eltrac Date: Tue, 11 Nov 2025 11:04:23 +0800 Subject: refactor: use urfave/cli --- go.mod | 4 ++++ go.sum | 10 ++++++++++ main.go | 45 +++++++++++++++++++++++++-------------------- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 1644bda..5413fce 100644 --- a/go.mod +++ b/go.mod @@ -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 diff --git a/go.sum b/go.sum index 33148a4..c90ae44 100644 --- a/go.sum +++ b/go.sum @@ -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= diff --git a/main.go b/main.go index d986749..ca60c40 100644 --- a/main.go +++ b/main.go @@ -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 \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 ") + 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) + } } -- cgit v1.2.3