From 268ab78088b53de0e48a87346324e11037a032a4 Mon Sep 17 00:00:00 2001 From: Liza Tsibur Date: Fri, 28 Jun 2024 00:07:51 -0600 Subject: [PATCH] updated update check Co-Authored-By: Naomi Kramer --- cmd/cmd.go | 27 +++++++++++++++++++++++++++ cmd/delete.go | 5 +++++ cmd/import.go | 13 ++++++++++++- cmd/list.go | 5 +++++ cmd/validate.go | 8 +++++++- cmd/view.go | 12 ++++++++++-- rita.go | 15 +-------------- 7 files changed, 67 insertions(+), 18 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index ec8d7d3..f034dae 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -1,8 +1,12 @@ package cmd import ( + "activecm/rita/config" + "activecm/rita/util" "errors" + "fmt" + "github.com/google/go-github/github" "github.com/spf13/afero" "github.com/urfave/cli/v2" ) @@ -33,3 +37,26 @@ func ConfigFlag(required bool) *cli.StringFlag { }, } } + +func CheckForUpdate(cCtx *cli.Context, afs afero.Fs) error { + // get the current version + currentVersion := config.Version + + // load config file + cfg, err := config.LoadConfig(afs, cCtx.String("config")) + if err != nil { + return fmt.Errorf("error loading config file: %w", err) + } + + // check for update if version is set + if cfg.UpdateCheckEnabled && currentVersion != "" { + newer, latestVersion, err := util.CheckForNewerVersion(github.NewClient(nil), "v0.0.0") + if err != nil { + return fmt.Errorf("error checking for newer version of RITA: %w", err) + } + if newer { + fmt.Printf("\n\t✨ A newer version (%s) of RITA is available! https://github.com/activecm/rita/releases ✨\n\n", latestVersion) + } + } + return nil +} diff --git a/cmd/delete.go b/cmd/delete.go index ec4edbc..40069c2 100644 --- a/cmd/delete.go +++ b/cmd/delete.go @@ -68,6 +68,11 @@ var DeleteCommand = &cli.Command{ return err } + // check for updates after running the command + if err := CheckForUpdate(cCtx, afero.NewOsFs()); err != nil { + return err + } + return nil }, } diff --git a/cmd/import.go b/cmd/import.go index d1f1f6a..106b860 100644 --- a/cmd/import.go +++ b/cmd/import.go @@ -93,6 +93,8 @@ var ImportCommand = &cli.Command{ if err != nil { return err } + + // set the number of workers based on the number of CPUs numParsers = int(math.Floor(math.Max(4, float64(runtime.NumCPU())/2))) numDigesters = int(math.Floor(math.Max(4, float64(runtime.NumCPU())/2))) numWriters = int(math.Floor(math.Max(4, float64(runtime.NumCPU())/2))) @@ -102,7 +104,16 @@ var ImportCommand = &cli.Command{ // run import command _, err = RunImportCmd(startTime, cfg, afs, cCtx.String("logs"), cCtx.String("database"), cCtx.Bool("rolling"), cCtx.Bool("rebuild")) - return err + if err != nil { + return err + } + + // check for updates after running the command + if err := CheckForUpdate(cCtx, afero.NewOsFs()); err != nil { + return err + } + + return nil }, } diff --git a/cmd/list.go b/cmd/list.go index 34155b9..4efa427 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -38,6 +38,11 @@ var ListCommand = &cli.Command{ return err } + // check for updates after running the command + if err := CheckForUpdate(cCtx, afero.NewOsFs()); err != nil { + return err + } + return nil }, } diff --git a/cmd/validate.go b/cmd/validate.go index 02d7e48..4275abc 100644 --- a/cmd/validate.go +++ b/cmd/validate.go @@ -35,6 +35,12 @@ var ValidateConfigCommand = &cli.Command{ // validate config file if err := RunValidateConfigCommand(afs, cCtx.String("config")); err != nil { + fmt.Printf("\n\t[!] Configuration file is not valid...") + return err + } + + // check for updates after running the command + if err := CheckForUpdate(cCtx, afero.NewOsFs()); err != nil { return err } @@ -54,7 +60,7 @@ func RunValidateConfigCommand(afs afero.Fs, configPath string) error { return err } - fmt.Println("configuration file is valid") + fmt.Printf("\n\t[✨] Configuration file is valid \n\n") return nil } diff --git a/cmd/view.go b/cmd/view.go index 6d693dc..34f9618 100644 --- a/cmd/view.go +++ b/cmd/view.go @@ -77,8 +77,16 @@ var ViewCommand = &cli.Command{ } } - err := runViewCmd(afs, cCtx.String("config"), cCtx.Args().First(), cCtx.Bool("stdout"), cCtx.String("search"), cCtx.Int("limit")) - return err + if err := runViewCmd(afs, cCtx.String("config"), cCtx.Args().First(), cCtx.Bool("stdout"), cCtx.String("search"), cCtx.Int("limit")); err != nil { + return err + } + + // check for updates after running the command + if err := CheckForUpdate(cCtx, afero.NewOsFs()); err != nil { + return err + } + + return nil }, } diff --git a/rita.go b/rita.go index 5224c91..c1162b1 100644 --- a/rita.go +++ b/rita.go @@ -4,13 +4,11 @@ import ( "activecm/rita/cmd" "activecm/rita/config" "activecm/rita/logger" - "activecm/rita/util" "activecm/rita/viewer" "fmt" "log" "os" - "github.com/google/go-github/github" "github.com/joho/godotenv" "github.com/urfave/cli/v2" ) @@ -61,17 +59,6 @@ func main() { log.Fatal("Error loading .env file", err) } - // check for update if version is set - if Version != "" { - newer, latestVersion, err := util.CheckForNewerVersion(github.NewClient(nil), "v0.0.0") - if err != nil { - log.Fatalf("Error checking for newer version: %v", err) - } - if newer { - fmt.Printf("\n\t✨ A newer version (%s) of RITA is available! https://github.com/activecm/rita/releases ✨\n", latestVersion) - } - } - return nil }, } @@ -88,7 +75,7 @@ func exitErrHandler(c *cli.Context, err error) { if err == nil { return } - fmt.Fprintf(c.App.ErrWriter, "\n[!] %+v\n", err.Error()) + fmt.Fprintf(c.App.ErrWriter, "\n\n\t[!] %+v\n\n", err.Error()) cli.OsExiter(1) }