github.com/vlifesystems/rulehunter@v0.0.0-20180501090014-673078aa4a83/html/reports.go (about) 1 // Copyright (C) 2016-2017 vLife Systems Ltd <http://vlifesystems.com> 2 // Licensed under an MIT licence. Please see LICENSE.md for details. 3 4 package html 5 6 import ( 7 "html/template" 8 "io/ioutil" 9 "path/filepath" 10 11 "github.com/vlifesystems/rulehunter/config" 12 "github.com/vlifesystems/rulehunter/progress" 13 "github.com/vlifesystems/rulehunter/report" 14 ) 15 16 func generateReports( 17 cfg *config.Config, 18 pm *progress.Monitor, 19 ) error { 20 type TplData struct { 21 Reports []*TplReport 22 Html map[string]template.HTML 23 } 24 25 reportFiles, err := ioutil.ReadDir(filepath.Join(cfg.BuildDir, "reports")) 26 if err != nil { 27 return err 28 } 29 30 numReportFiles := countFiles(reportFiles) 31 tplReports := make([]*TplReport, numReportFiles) 32 33 for i, file := range reportFiles { 34 if !file.IsDir() { 35 report, err := report.LoadJSON(cfg, file.Name(), maxReportLoadAttempts) 36 if err != nil { 37 return err 38 } 39 reportURLDir, err := generateReport(report, cfg) 40 if err != nil { 41 return err 42 } 43 tplReports[i] = newTplReport( 44 report.Mode, 45 report.Title, 46 makeTagLinks(report.Tags), 47 report.Category, 48 makeCategoryLink(report.Category), 49 reportURLDir, 50 report.Stamp, 51 ) 52 } 53 } 54 sortTplReportsByDate(tplReports) 55 tplData := TplData{ 56 Reports: tplReports, 57 Html: makeHtml(cfg, "reports"), 58 } 59 60 outputFilename := filepath.Join("reports", "index.html") 61 return writeTemplate(cfg, outputFilename, reportsTpl, tplData) 62 }