summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go35
1 files 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) {