// Copyright 2018 Google LLC All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package empty import ( "fmt" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/partial" "github.com/google/go-containerregistry/pkg/v1/types" ) // Image is a singleton empty image, think: FROM scratch. var Image, _ = partial.UncompressedToImage(emptyImage{}) type emptyImage struct{} // MediaType implements partial.UncompressedImageCore. func (i emptyImage) MediaType() (types.MediaType, error) { return types.DockerManifestSchema2, nil } // RawConfigFile implements partial.UncompressedImageCore. func (i emptyImage) RawConfigFile() ([]byte, error) { return partial.RawConfigFile(i) } // ConfigFile implements v1.Image. func (i emptyImage) ConfigFile() (*v1.ConfigFile, error) { return &v1.ConfigFile{ RootFS: v1.RootFS{ // Some clients check this. Type: "layers", }, }, nil } func (i emptyImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, error) { return nil, fmt.Errorf("LayerByDiffID(%s): empty image", h) }