// 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) }