mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-16 02:33:28 +00:00
builder: write HTML size report
This is not a big change over the existing size report with -size=full, but it is a bit more readable. More information will be added in subsequent commits.
This commit is contained in:
committed by
Ron Evans
parent
eeba90fd5b
commit
b18213805a
@@ -0,0 +1,56 @@
|
||||
package builder
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"os"
|
||||
)
|
||||
|
||||
//go:embed size-report.html
|
||||
var sizeReportBase string
|
||||
|
||||
func writeSizeReport(sizes *programSize, filename, pkgName string) error {
|
||||
tmpl, err := template.New("report").Parse(sizeReportBase)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
f, err := os.Create(filename)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not open report file: %w", err)
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
// Prepare data for the report.
|
||||
type sizeLine struct {
|
||||
Name string
|
||||
Size *packageSize
|
||||
}
|
||||
programData := []sizeLine{}
|
||||
for _, name := range sizes.sortedPackageNames() {
|
||||
pkgSize := sizes.Packages[name]
|
||||
programData = append(programData, sizeLine{
|
||||
Name: name,
|
||||
Size: pkgSize,
|
||||
})
|
||||
}
|
||||
sizeTotal := map[string]uint64{
|
||||
"code": sizes.Code,
|
||||
"rodata": sizes.ROData,
|
||||
"data": sizes.Data,
|
||||
"bss": sizes.BSS,
|
||||
"flash": sizes.Flash(),
|
||||
}
|
||||
|
||||
// Write the report.
|
||||
err = tmpl.Execute(f, map[string]any{
|
||||
"pkgName": pkgName,
|
||||
"sizes": programData,
|
||||
"sizeTotal": sizeTotal,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not create report file: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user