Add command to delete sessions

This commit is contained in:
Alvaro Muñoz
2023-04-14 22:52:03 +02:00
parent 2d435293a7
commit f589c06ce7

67
main.go
View File

@@ -10,7 +10,6 @@ import (
"fmt" "fmt"
"github.com/cli/go-gh" "github.com/cli/go-gh"
"github.com/cli/go-gh/pkg/api" "github.com/cli/go-gh/pkg/api"
// "github.com/cli/go-gh/pkg/jsonpretty"
"github.com/google/uuid" "github.com/google/uuid"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"io/ioutil" "io/ioutil"
@@ -477,6 +476,34 @@ func downloadDatabase(nwo string, language string, outputDir string) error {
return nil return nil
} }
func deleteSession(name string) error {
sessions, err := getSessions()
if err != nil {
return err
}
if sessions == nil {
return errors.New("No sessions found")
}
// delete session if it exists
if _, ok := sessions[name]; ok {
delete(sessions, name)
// marshal sessions to yaml
sessionsYaml, err := yaml.Marshal(sessions)
if err != nil {
return err
}
// write sessions to file
err = ioutil.WriteFile(sessionsFilePath, sessionsYaml, os.ModePerm)
if err != nil {
return err
}
return nil
}
return errors.New(fmt.Sprintf("Session '%s' does not exist", name))
}
func saveSession(name string, controller string, runs []Run, language string, listFile string, list string, query string, count int) error { func saveSession(name string, controller string, runs []Run, language string, listFile string, list string, query string, count int) error {
sessions, err := getSessions() sessions, err := getSessions()
if err != nil { if err != nil {
@@ -614,6 +641,8 @@ Usage:
gh mrva status --name <run name> [--json] gh mrva status --name <run name> [--json]
gh mrva list [--json] gh mrva list [--json]
gh mrva delete --name <run name>
`) `)
} }
@@ -640,6 +669,8 @@ Usage:
status(args) status(args)
case "list": case "list":
list(args) list(args)
case "delete":
del(args)
default: default:
log.Fatalf("Unrecognized command %q. "+ log.Fatalf("Unrecognized command %q. "+
"Command must be one of: submit, download", cmd) "Command must be one of: submit, download", cmd)
@@ -775,11 +806,7 @@ Usage:
log.Fatal(err) log.Fatal(err)
} }
fmt.Println(string(data)) fmt.Println(string(data))
// w := &bytes.Buffer{}
// jsonpretty.Format(w, bytes.NewReader(data), " ", true)
// fmt.Println(w.String())
} else { } else {
// Print results in a nice way
fmt.Println("Run name:", runName) fmt.Println("Run name:", runName)
fmt.Println("Total runs:", len(results.Runs)) fmt.Println("Total runs:", len(results.Runs))
fmt.Println("Total successful scans:", results.TotalSuccessfulScans) fmt.Println("Total successful scans:", results.TotalSuccessfulScans)
@@ -921,6 +948,36 @@ Usage:
fmt.Println("Done!") fmt.Println("Done!")
} }
func del(args []string) {
flag := flag.NewFlagSet("mrva delete", flag.ExitOnError)
nameFlag := flag.String("name", "", "Session name to be deleted")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, `gh mrva - Run CodeQL queries at scale using Multi-Repository Variant Analysis (MRVA)
Usage:
gh mrva delete --name
`)
fmt.Fprintf(os.Stderr, "Flags:\n")
flag.PrintDefaults()
fmt.Fprintf(os.Stderr, "\n")
}
flag.Parse(args)
if *nameFlag == "" {
flag.Usage()
os.Exit(1)
}
err := deleteSession(*nameFlag)
if err == nil {
fmt.Println("Session deleted")
} else {
log.Fatal(err)
}
}
func list(args []string) { func list(args []string) {
flag := flag.NewFlagSet("mrva list", flag.ExitOnError) flag := flag.NewFlagSet("mrva list", flag.ExitOnError)
jsonFlag := flag.Bool("json", false, "Output in JSON format (default: false)") jsonFlag := flag.Bool("json", false, "Output in JSON format (default: false)")