From b91f014bed782af5b7e0408651c076779ce4eb3e Mon Sep 17 00:00:00 2001 From: Eltrac Date: Sun, 23 Nov 2025 11:47:31 +0800 Subject: refactor: clearer entry point code --- main.go | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 5d1bda6..1273c77 100644 --- a/main.go +++ b/main.go @@ -41,13 +41,22 @@ func main() { os.Exit(0) } - // check args + // handle arguments if cmd.Args().Len() == 0 { printErrorAndExit("Please provide a formulae/cask name.") } + pkgName := cmd.Args().First() - // do the job - searchAndPrint(cmd.Args().First()) + // search and print + showLoadingPrompt(fmt.Sprintf("What the heck is \"%s\"", pkgName)) + stat := fetchToCreateStatistics(pkgName) + hideLoadingPrompt() + stat.Print() + + // cache + if !NoCache { + stat.Cache() + } return nil }, @@ -59,13 +68,14 @@ func main() { } } -func searchAndPrint(pkgName string) { - // prompt - showLoadingPrompt(fmt.Sprintf("What the heck is \"%s\"", pkgName)) +func fetchToCreateStatistics(pkgName string) *statistics { // try reading from cache - var stat *statistics = NewStatisticsFromCache(pkgName) + var stat *statistics + if !NoCache { + stat = NewStatisticsFromCache(pkgName) + } + // if cache not hit or explicitly requested no cache if NoCache || stat == nil { - // cache not hit, then search fmlChan := make(chan *FormulaInfo) caskChan := make(chan *CaskInfo) rvsChan := make(chan []string) @@ -78,15 +88,10 @@ func searchAndPrint(pkgName string) { go func() { rvsChan <- GetBrewUses(pkgName) }() + // create fine-grained data out of raw stat = NewStatistics(<-fmlChan, <-caskChan, pkgName, <-rvsChan) - // handle caching - if !NoCache { - stat.Cache() - } } - // print - hideLoadingPrompt() - stat.Print() + return stat } func printErrorAndExit(msg string) { -- cgit v1.2.3