Skip to content
This repository has been archived by the owner on Jul 19, 2022. It is now read-only.

Commit

Permalink
Merge pull request #39 from glyn/add-client-interface-back
Browse files Browse the repository at this point in the history
Reinstate Client interface
  • Loading branch information
glyn committed Oct 17, 2019
2 parents ae6c700 + 1b2ef82 commit 2212ca4
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
39 changes: 39 additions & 0 deletions pkg/registry/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (c) 2019-Present Pivotal Software, Inc. 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 registry

import (
"github.com/pivotal/image-relocation/pkg/image"
)

// Client provides a way of interacting with image registries.
type Client interface {
// Digest returns the digest of the given image or an error if the image does not exist or the digest is unavailable.
Digest(image.Name) (image.Digest, error)

// Copy copies the given source image to the given target and returns the image's digest (which is preserved) and
// the size in bytes of the raw image manifest.
Copy(source image.Name, target image.Name) (image.Digest, int64, error)

// NewLayout creates a Layout for the Client and creates a corresponding directory containing a new OCI image layout at
// the given file system path.
NewLayout(path string) (Layout, error)

// ReadLayout creates a Layout for the Client from the given file system path of a directory containing an existing
// OCI image layout.
ReadLayout(path string) (Layout, error)
}
7 changes: 6 additions & 1 deletion pkg/registry/ggcr/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
const outputDirPermissions = 0755

// RegistryClient provides methods for building abstract images.
// This interface is not intended for external consumption.
type RegistryClient interface {
// ReadRemoteImage builds an abstract image from a repository.
ReadRemoteImage(n image.Name) (registry.Image, error)
Expand All @@ -51,7 +52,11 @@ type client struct {
writeRemoteIndex indexWriter
}

var _ RegistryClient = &client{}
var (
// Ensure client conforms to the relevant interfaces.
_ RegistryClient = &client{}
_ registry.Client = &client{}
)

// NewRegistryClient returns a new Client.
func NewRegistryClient() *client {
Expand Down

0 comments on commit 2212ca4

Please sign in to comment.