diff options
author | Paul Duncan <pabs@pablotron.org> | 2022-03-18 00:38:35 -0400 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2022-03-18 00:38:35 -0400 |
commit | f955afc850693247dccb70bf470a3c88b6109b94 (patch) | |
tree | 4751d10df794325917fa0188874d15ded17b8afe /cmd/cmd.go | |
parent | 43be1706be867bc81bb8ac0b77961d63196669af (diff) | |
download | cvez-f955afc850693247dccb70bf470a3c88b6109b94.tar.bz2 cvez-f955afc850693247dccb70bf470a3c88b6109b94.zip |
cmd: refactor commands
Diffstat (limited to 'cmd/cmd.go')
-rw-r--r-- | cmd/cmd.go | 62 |
1 files changed, 62 insertions, 0 deletions
@@ -1,2 +1,64 @@ // Command-line interface package cmd + +import ( + "encoding/json" + "github.com/pablotron/cvez/datadir" + "github.com/pablotron/cvez/dbstore" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + "os" + "strings" + "time" +) + +// Build query string. +func getSearchQuery(args []string) string { + r := make([]string, len(args)) + + for i, v := range(args) { + r[i] = "\"" + strings.ReplaceAll(strings.ToLower(v), "\"", "\"\"") + "\"" + } + + return strings.Join(r, " AND ") +} + +// Get database store. +func getDb() dbstore.DbStore { + // build database path + dbPath, err := datadir.Join("cvez.db") + if err != nil { + log.Error().Err(err).Msg("Join") + os.Exit(-1) + } + + // open database + db, err := dbstore.Open(dbPath) + if err != nil { + log.Error().Err(err).Msg("Open") + os.Exit(-1) + } + + return db +} + +// JSON encode data and write it to standard output +func jsonEncode(data interface{}) { + // search for CVEs, write result + e := json.NewEncoder(os.Stdout) + if err := e.Encode(data); err != nil { + log.Error().Err(err).Msg("Encode") + os.Exit(-1) + } +} + +func init() { + // set global logging options + zerolog.TimeFieldFormat = time.RFC3339 + zerolog.SetGlobalLevel(zerolog.InfoLevel) + + rootCmd.AddCommand(searchCmd) + rootCmd.AddCommand(cisaSearchCmd) + rootCmd.AddCommand(cvssCmd) + rootCmd.AddCommand(updateCmd) +} |