/* Copyright © 2023 NAME HERE */ package cmd import ( "log" "fmt" "encoding/json" "github.com/spf13/cobra" "github.com/GitHubSecurityLab/gh-mrva/utils" "github.com/GitHubSecurityLab/gh-mrva/models" ) var listCmd = &cobra.Command{ Use: "list", Short: "List saved sessions.", Long: `List saved sessions.`, Run: func(cmd *cobra.Command, args []string) { listSessions() }, } func init() { rootCmd.AddCommand(listCmd) listCmd.Flags().BoolVarP(&jsonFlag, "json", "j", false, "Output in JSON format (default: false)") } func listSessions() { sessions, err := utils.GetSessions() if err != nil { log.Fatal(err) } if sessions != nil { if jsonFlag { sessions_list := make([]models.Session, 0, len(sessions)) for _, session := range sessions { sessions_list = append(sessions_list, session) } data, err := json.MarshalIndent(sessions_list, "", " ") if err != nil { log.Fatal(err) } fmt.Println(string(data)) // w := &bytes.Buffer{} // jsonpretty.Format(w, bytes.NewReader(data), " ", true) // fmt.Println(w.String()) } else { for name, entry := range sessions { fmt.Printf("%s (%v)\n", name, entry.Timestamp) fmt.Printf(" Controller: %s\n", entry.Controller) fmt.Printf(" Language: %s\n", entry.Language) fmt.Printf(" List file: %s\n", entry.ListFile) fmt.Printf(" List: %s\n", entry.List) fmt.Printf(" Repository count: %d\n", entry.RepositoryCount) fmt.Println(" Runs:") for _, run := range entry.Runs { fmt.Printf(" ID: %d\n", run.Id) fmt.Printf(" Query: %s\n", run.Query) } } } } }