summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2026-01-07 17:25:01 +0800
committerEltrac <hi@guhub.cn>2026-01-07 17:25:01 +0800
commit94bf428bc4640d84898ae5ff6a1123df22118aac (patch)
tree6831d15b5c7a6d6abbb933b3db5529ab416639ad /main.go
parentb95c5a4de8da2d036c8ab2f591a62756a52f3642 (diff)
parentb91f014bed782af5b7e0408651c076779ce4eb3e (diff)
Merge branch 'master' of https://github.com/BigCoke233/wtfis
Diffstat (limited to 'main.go')
-rw-r--r--main.go40
1 files changed, 27 insertions, 13 deletions
diff --git a/main.go b/main.go
index 9d350b8..8796971 100644
--- a/main.go
+++ b/main.go
@@ -33,10 +33,28 @@ func main() {
},
},
Action: func(ctx context.Context, cmd *cli.Command) error {
+ if DoClearCache {
+ ClearCache()
+ fmt.Println("Cache cleared.")
+ os.Exit(0)
+ }
+
+ // handle arguments
if cmd.Args().Len() == 0 {
printErrorAndExit("Please provide a formulae/cask name.")
}
- searchAndPrint(cmd.Args().First())
+ pkgName := 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
},
@@ -135,13 +153,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)
@@ -154,15 +173,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) {