Skip to content

Commit

Permalink
feat: create html report by json (#46)
Browse files Browse the repository at this point in the history
* refactor: migrate plugin from bash to golang

* feat: add help message

* build: add goreleaser

* feat: create html report by json

* refactor: lint issues
  • Loading branch information
malikovmm committed Apr 13, 2023
1 parent 1427403 commit 02bec9d
Showing 1 changed file with 25 additions and 13 deletions.
38 changes: 25 additions & 13 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,22 @@ func main() {
if slices.Contains(os.Args, "-h") || slices.Contains(os.Args, "--help") {
helpMessage()
}

tempFileName := filepath.Join(os.TempDir(), tempJsonFileName)
defer removeFile(tempFileName)
if err := makeTrivyJsonReport(tempFileName); err != nil {
log.Fatalf("failed to make trivy report: %v", err)
jsonResultFile := getFlagValue("--load-result")
if jsonResultFile == "" {
jsonResultFile = filepath.Join(os.TempDir(), tempJsonFileName)
defer removeFile(jsonResultFile)
err := makeTrivyJsonReport(jsonResultFile)
if err != nil {
log.Fatalf("failed to build report: %v", err)
}
}

firstHTML, err := readPluginFile("first.html")
if err != nil {
log.Fatalf("failed to read html file: %v", err)
}

reportJson, err := os.ReadFile(tempFileName)
reportJson, err := os.ReadFile(jsonResultFile)
if err != nil {
log.Fatalf("failed to read json file: %v", err)
}
Expand All @@ -59,13 +62,6 @@ func removeFile(file string) {
log.Fatalf("failed to remove file %v", err)
}
}
func readPluginFile(fileName string) ([]byte, error) {
ex, err := os.Executable()
if err != nil {
return nil, err
}
return os.ReadFile(filepath.Join(filepath.Dir(ex), fileName))
}

func helpMessage() {
_, err := fmt.Printf(`
Expand Down Expand Up @@ -97,3 +93,19 @@ func makeTrivyJsonReport(outputFileName string) error {
}
return nil
}

func getFlagValue(flag string) string {
flagIndex := slices.Index(os.Args, flag)
if flagIndex != -1 && (len(os.Args)-1) > flagIndex { // the flag exists and it is not the last argument
return os.Args[flagIndex+1]
}
return ""
}

func readPluginFile(fileName string) ([]byte, error) {
ex, err := os.Executable()
if err != nil {
return nil, err
}
return os.ReadFile(filepath.Join(filepath.Dir(ex), fileName))
}

0 comments on commit 02bec9d

Please sign in to comment.