diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 71 |
1 files changed, 38 insertions, 33 deletions
@@ -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) |
