123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package layer // import "github.com/docker/docker/layer"
- import (
- "archive/tar"
- "bytes"
- "fmt"
- "io"
- )
- // DigestSHA256EmptyTar is the canonical sha256 digest of empty tar file -
- // (1024 NULL bytes)
- const DigestSHA256EmptyTar = DiffID("sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef")
- type emptyLayer struct{}
- // EmptyLayer is a layer that corresponds to empty tar.
- var EmptyLayer = &emptyLayer{}
- func (el *emptyLayer) TarStream() (io.ReadCloser, error) {
- buf := new(bytes.Buffer)
- tarWriter := tar.NewWriter(buf)
- tarWriter.Close()
- return io.NopCloser(buf), nil
- }
- func (el *emptyLayer) TarStreamFrom(p ChainID) (io.ReadCloser, error) {
- if p == "" {
- return el.TarStream()
- }
- return nil, fmt.Errorf("can't get parent tar stream of an empty layer")
- }
- func (el *emptyLayer) ChainID() ChainID {
- return ChainID(DigestSHA256EmptyTar)
- }
- func (el *emptyLayer) DiffID() DiffID {
- return DigestSHA256EmptyTar
- }
- func (el *emptyLayer) Parent() Layer {
- return nil
- }
- func (el *emptyLayer) Size() int64 {
- return 0
- }
- func (el *emptyLayer) DiffSize() int64 {
- return 0
- }
- func (el *emptyLayer) Metadata() (map[string]string, error) {
- return make(map[string]string), nil
- }
- // IsEmpty returns true if the layer is an EmptyLayer
- func IsEmpty(diffID DiffID) bool {
- return diffID == DigestSHA256EmptyTar
- }
|