From c5849ca455f37d210745664255bb9ff490f685a4 Mon Sep 17 00:00:00 2001 From: Eltrac Date: Fri, 21 Nov 2025 14:00:52 +0800 Subject: refactor: move main logic outside CLI declaration --- main.go | 71 +++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/main.go b/main.go index 03fa05e..5d95b62 100644 --- a/main.go +++ b/main.go @@ -9,11 +9,11 @@ import ( "os" ) +var NoCache, DoClearCache bool + func main() { EnsureBrewAvailable() - var noCache, clearCache bool - // declare CLI app cmd := &cli.Command{ Name: "wthis", @@ -24,18 +24,18 @@ func main() { Aliases: []string{"nc"}, Usage: "Disable caching", Value: false, - Destination: &noCache, + Destination: &NoCache, }, &cli.BoolFlag{ Name: "clear-cache", Aliases: []string{"cc"}, Usage: "Clear cache", Value: false, - Destination: &clearCache, + Destination: &DoClearCache, }, }, Action: func(ctx context.Context, cmd *cli.Command) error { - if clearCache { + if DoClearCache { ClearCache() fmt.Println("Cache cleared.") os.Exit(0) @@ -45,34 +45,9 @@ func main() { if cmd.Args().Len() == 0 { printErrorAndExit("Please provide a formulae/cask name.") } - pkgName := cmd.Args().First() - // prompt - showLoadingPrompt(fmt.Sprintf("What the heck is \"%s\"", pkgName)) - // try reading from cache - var stat *statistics = NewStatisticsFromCache(pkgName) - if noCache || stat == nil { - // cache not hit, then search - fmlChan := make(chan *FormulaInfo) - caskChan := make(chan *CaskInfo) - rvsChan := make(chan []string) - // start 2 goroutines, fetching formula/cask info and uses - go func() { - formula, cask := GetBrewInfo(pkgName) - fmlChan <- formula - caskChan <- cask - }() - go func() { - rvsChan <- GetBrewUses(pkgName) - }() - stat = NewStatistics(<-fmlChan, <-caskChan, pkgName,<-rvsChan) - // handle caching - if !noCache { - stat.Cache() - } - } - // print - hideLoadingPrompt() - stat.Print() + + // do the job + searchAndPrint(cmd.Args().First()) return nil }, @@ -84,6 +59,36 @@ func main() { } } +func searchAndPrint(pkgName string) { + // prompt + showLoadingPrompt(fmt.Sprintf("What the heck is \"%s\"", pkgName)) + // try reading from cache + var stat *statistics = NewStatisticsFromCache(pkgName) + if NoCache || stat == nil { + // cache not hit, then search + fmlChan := make(chan *FormulaInfo) + caskChan := make(chan *CaskInfo) + rvsChan := make(chan []string) + // start 2 goroutines, fetching formula/cask info and uses + go func() { + formula, cask := GetBrewInfo(pkgName) + fmlChan <- formula + caskChan <- cask + }() + go func() { + rvsChan <- GetBrewUses(pkgName) + }() + stat = NewStatistics(<-fmlChan, <-caskChan, pkgName,<-rvsChan) + // handle caching + if !NoCache { + stat.Cache() + } + } + // print + hideLoadingPrompt() + stat.Print() +} + func printErrorAndExit(msg string) { hideLoadingPrompt() color.Red("❌ %s", msg) -- cgit v1.2.3