github.com/goreleaser/goreleaser@v1.25.1/internal/pipe/reportsizes/reportsizes.go (about) 1 package reportsizes 2 3 import ( 4 "os" 5 6 "github.com/caarlos0/log" 7 "github.com/docker/go-units" 8 "github.com/goreleaser/goreleaser/internal/artifact" 9 "github.com/goreleaser/goreleaser/pkg/context" 10 ) 11 12 type Pipe struct{} 13 14 func (Pipe) Skip(ctx *context.Context) bool { return !ctx.Config.ReportSizes } 15 func (Pipe) String() string { return "size reports" } 16 17 func (Pipe) Run(ctx *context.Context) error { 18 return ctx.Artifacts.Filter(artifact.Or( 19 artifact.ByType(artifact.Binary), 20 artifact.ByType(artifact.UniversalBinary), 21 artifact.ByType(artifact.UploadableArchive), 22 artifact.ByType(artifact.PublishableSnapcraft), 23 artifact.ByType(artifact.LinuxPackage), 24 artifact.ByType(artifact.CArchive), 25 artifact.ByType(artifact.CShared), 26 artifact.ByType(artifact.Header), 27 )).Visit(func(a *artifact.Artifact) error { 28 stat, err := os.Stat(a.Path) 29 if err != nil { 30 return err 31 } 32 a.Extra[artifact.ExtraSize] = stat.Size() 33 log.WithField("path", a.Path). 34 Info(units.BytesSize(float64(stat.Size()))) 35 return nil 36 }) 37 }