summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main.go71
1 files 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)