dive-zfs/image/layer.go
2018-10-06 09:45:08 -04:00

45 lines
950 B
Go

package image
import (
"github.com/docker/docker/api/types/image"
"github.com/wagoodman/dive/filetree"
"strings"
"fmt"
"strconv"
"github.com/dustin/go-humanize"
)
type Layer struct {
TarPath string
History image.HistoryResponseItem
Index int
Tree *filetree.FileTree
RefTrees []*filetree.FileTree
}
func (layer *Layer) Id() string {
rangeBound := 25
if length := len(layer.History.ID); length < 25 {
rangeBound = length
}
id := layer.History.ID[0:rangeBound]
// show the tagged image as the last layer
// if len(layer.History.Tags) > 0 {
// id = "[" + strings.Join(layer.History.Tags, ",") + "]"
// }
return id
}
func (layer *Layer) String() string {
return fmt.Sprintf(LayerFormat,
layer.Id(),
strconv.Itoa(int(100.0*filetree.EfficiencyScore(layer.RefTrees[:layer.Index+1]))) + "%",
//"100%",
humanize.Bytes(uint64(layer.History.Size)),
strings.TrimPrefix(layer.History.CreatedBy, "/bin/sh -c "))
}