diff --git a/README.md b/README.md index 590595b..521cf46 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ heptapod tm ls Dryrun the current rules, in verbose mode, also log speed and debug informations. (Potentially list nonexistent directories and files!) ``` -heptapod -v run -d +heptapod -v 1 run -d ``` To run the current rules, and add the dirs to the TM exclude list. Also writes exclude logs to `~/.heptapod/logs` (or the given `--logDir dir`) for easier revert. diff --git a/pkg/cli-utils/global-flags.go b/pkg/cli-utils/global-flags.go index b9f6461..cc99aea 100644 --- a/pkg/cli-utils/global-flags.go +++ b/pkg/cli-utils/global-flags.go @@ -6,7 +6,7 @@ import ( var rulePath string var logDir string -var verbose bool +var verbose int var par int var buffer int @@ -26,11 +26,11 @@ var LogDirFlag = &cli.StringFlag{ Destination: &logDir, } -var VerboseFlag = &cli.BoolFlag{ +var VerboseFlag = &cli.IntFlag{ Name: "verbose", Aliases: []string{"v"}, - Value: false, - Usage: "prints out performance logs (and other logs in general)", + Value: 0, + Usage: "prints out performance logs (and other logs in general) (0-4)", Destination: &verbose, } diff --git a/pkg/cli-utils/run-command.go b/pkg/cli-utils/run-command.go index 3067724..36277c5 100644 --- a/pkg/cli-utils/run-command.go +++ b/pkg/cli-utils/run-command.go @@ -31,11 +31,12 @@ var RunCommand = &cli.Command{ fmt.Print(strings.Join(res, "\r\n")) fmt.Print("\n") } else { + log.Printf("path detection started") res := pkg.GetExcludedPaths(rulePath, par, buffer, verbose) - tmutil.AddPathsToTM(res, logDir, buffer, verbose) - if verbose { - log.Printf("total %d paths found\n", len(res)) - } + log.Printf("total %d paths found\n", len(res)) + log.Printf("tm excludes started") + added := tmutil.AddPathsToTM(res, logDir, buffer, verbose) + log.Printf("added %d paths to exclude", added) } return nil }, diff --git a/pkg/cli-utils/version-command.go b/pkg/cli-utils/version-command.go index 476f280..548f7cc 100644 --- a/pkg/cli-utils/version-command.go +++ b/pkg/cli-utils/version-command.go @@ -10,17 +10,8 @@ func VersionCommand(version string, commit string, date string) *cli.Command { Name: "version", Aliases: []string{"v"}, Usage: "version info", - Flags: []cli.Flag{ - &cli.BoolFlag{ - Name: "verbose", - Aliases: []string{"v"}, - Value: false, - Usage: "more detaild version info", - Destination: &verbose, - }, - }, Action: func(c *cli.Context) error { - if verbose { + if verbose > 0 { fmt.Println("version: ", version) fmt.Println("commit: ", commit) fmt.Println("date: ", date) diff --git a/pkg/runner.go b/pkg/runner.go index 9e75e19..b0a4838 100644 --- a/pkg/runner.go +++ b/pkg/runner.go @@ -7,7 +7,7 @@ import ( "log" ) -func GetExcludedPaths(ruleDir string, par int, bufferSize int, verbose bool) []string { +func GetExcludedPaths(ruleDir string, par int, bufferSize int, verbose int) []string { path, err := utils.FixupPathsToHandleHome(ruleDir) if err != nil { log.Fatal(err) diff --git a/pkg/tmutil/tmutil.go b/pkg/tmutil/tmutil.go index 95f0a69..8eb90ad 100644 --- a/pkg/tmutil/tmutil.go +++ b/pkg/tmutil/tmutil.go @@ -13,7 +13,7 @@ import ( "time" ) -func AddPathsToTM(paths []string, logDir string, bufferSize int, verbose bool) { +func AddPathsToTM(paths []string, logDir string, bufferSize int, verbose int) int { logPath, err := utils.FixupPathsToHandleHome(logDir) if err != nil { log.Fatal(err) @@ -65,12 +65,13 @@ func AddPathsToTM(paths []string, logDir string, bufferSize int, verbose bool) { } close(check) <-finished - if verbose { + if verbose > 0 { log.Printf("added %d", added) } + return added } -func checkPath(path string, verbose bool) (bool, error) { +func checkPath(path string, verbose int) (bool, error) { if _, err := os.Stat(path); os.IsNotExist(err) { return false, err } @@ -82,7 +83,7 @@ func checkPath(path string, verbose bool) (bool, error) { cmd.Stderr = &outErr err := cmd.Run() if err != nil { - if verbose { + if verbose > 1 { log.Println(out.String()) log.Println(outErr.String()) } @@ -123,7 +124,7 @@ func removePath(path string) error { return err } -func RemoveAllFromLogs(logPath string, bufferSize int, verbose bool) { +func RemoveAllFromLogs(logPath string, bufferSize int, verbose int) { files, err := ioutil.ReadDir(logPath) if err != nil { log.Fatal(err) @@ -132,7 +133,7 @@ func RemoveAllFromLogs(logPath string, bufferSize int, verbose bool) { RemoveFileFromLogs(logPath, file.Name(), bufferSize, verbose) } } -func RemoveFileFromLogs(logPath string, fileName string, bufferSize int, verbose bool) { +func RemoveFileFromLogs(logPath string, fileName string, bufferSize int, verbose int) { file, err := os.Open(filepath.Join(logPath, fileName)) if err != nil { log.Println(err) @@ -149,7 +150,7 @@ func RemoveFileFromLogs(logPath string, fileName string, bufferSize int, verbose } RemovePathsFromTM(lines, bufferSize, verbose) } -func RemovePathsFromTM(paths []string, bufferSize int, verbose bool) { +func RemovePathsFromTM(paths []string, bufferSize int, verbose int) { defer utils.TimeTrack(time.Now(), "tmutil run", verbose) check := make(chan string, bufferSize) @@ -184,7 +185,7 @@ func RemovePathsFromTM(paths []string, bufferSize int, verbose bool) { } close(check) <-finished - if verbose { + if verbose > 0 { log.Printf("removed %d", removed) } } diff --git a/pkg/utils/time-utils.go b/pkg/utils/time-utils.go index 70caa50..bbe7517 100644 --- a/pkg/utils/time-utils.go +++ b/pkg/utils/time-utils.go @@ -5,9 +5,9 @@ import ( "time" ) -func TimeTrack(start time.Time, name string, verbose bool) { +func TimeTrack(start time.Time, name string, verbose int) { elapsed := time.Since(start) - if verbose { + if verbose > 0 { log.Printf("%s took %s", name, elapsed) } } diff --git a/pkg/walker/walker.go b/pkg/walker/walker.go index 9696bef..6ae2f68 100644 --- a/pkg/walker/walker.go +++ b/pkg/walker/walker.go @@ -26,7 +26,7 @@ type WalkJob struct { AlreadyFiltered []string } -func Run(jobs []WalkJob, par int, bufferSize int, verbose bool) []string { +func Run(jobs []WalkJob, par int, bufferSize int, verbose int) []string { defer utils.TimeTrack(time.Now(), "walker run", verbose) if len(jobs) == 0 { return []string{} @@ -64,13 +64,13 @@ func Run(jobs []WalkJob, par int, bufferSize int, verbose bool) []string { return res } -func worker(id int, spawn chan WalkJob, start chan bool, end chan []string, verbose bool) { +func worker(id int, spawn chan WalkJob, start chan bool, end chan []string, verbose int) { for j := range spawn { walk(id, j.Rootpath, j.Walkers, j.AlreadyFiltered, spawn, start, end, verbose) } } -func walk(runnerId int, rootpath string, walkers []Walker, alreadyFiltered []string, spawn chan WalkJob, start chan bool, end chan []string, verbose bool) { +func walk(runnerId int, rootpath string, walkers []Walker, alreadyFiltered []string, spawn chan WalkJob, start chan bool, end chan []string, verbose int) { defer utils.TimeTrack(time.Now(), fmt.Sprintf("(runner-%d) walk on %s", runnerId, rootpath), verbose) start <- true hasNext := true @@ -89,7 +89,7 @@ func walk(runnerId int, rootpath string, walkers []Walker, alreadyFiltered []str next := l.Next files, err := ioutil.ReadDir(l.Data) if err != nil { - if (verbose) { + if verbose > 0 { fmt.Println("!!! There was an error: ", err.Error()) } if next == nil { @@ -104,20 +104,24 @@ func walk(runnerId int, rootpath string, walkers []Walker, alreadyFiltered []str globalIgnores := []string{} for _, walker := range walkers { r, i1, i2, name := walker(l.Data, files) - if(verbose && len(r) > 0) { + if verbose > 1 && len(r) > 0 { fmt.Println("-----") fmt.Println(name) fmt.Println(l.Data) for _, v := range r { fmt.Println("\t", v) } - fmt.Println("-") - for _, v := range i1 { - fmt.Println("\t", v) - } - fmt.Println("-") - for _, v := range i2 { - fmt.Println("\t", v) + if verbose > 2 { + fmt.Println("-") + for _, v := range i1 { + fmt.Println("\t", v) + } + if verbose > 3 { + fmt.Println("-") + for _, v := range i2 { + fmt.Println("\t", v) + } + } } } res = res.Prepend(r)