empty.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package layer
  2. import (
  3. "archive/tar"
  4. "bytes"
  5. "io"
  6. "io/ioutil"
  7. )
  8. // DigestSHA256EmptyTar is the canonical sha256 digest of empty tar file -
  9. // (1024 NULL bytes)
  10. const DigestSHA256EmptyTar = DiffID("sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef")
  11. type emptyLayer struct{}
  12. // EmptyLayer is a layer that corresponds to empty tar.
  13. var EmptyLayer = &emptyLayer{}
  14. func (el *emptyLayer) TarStream() (io.ReadCloser, error) {
  15. buf := new(bytes.Buffer)
  16. tarWriter := tar.NewWriter(buf)
  17. tarWriter.Close()
  18. return ioutil.NopCloser(buf), nil
  19. }
  20. func (el *emptyLayer) ChainID() ChainID {
  21. return ChainID(DigestSHA256EmptyTar)
  22. }
  23. func (el *emptyLayer) DiffID() DiffID {
  24. return DigestSHA256EmptyTar
  25. }
  26. func (el *emptyLayer) Parent() Layer {
  27. return nil
  28. }
  29. func (el *emptyLayer) Size() (size int64, err error) {
  30. return 0, nil
  31. }
  32. func (el *emptyLayer) DiffSize() (size int64, err error) {
  33. return 0, nil
  34. }
  35. func (el *emptyLayer) Metadata() (map[string]string, error) {
  36. return make(map[string]string), nil
  37. }