initial work on registry client
parent
a9cfe6c294
commit
dfca156961
|
@ -0,0 +1,72 @@
|
||||||
|
package registry
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
// "github.com/docker/distribution/digest"
|
||||||
|
// "github.com/docker/distribution/manifest"
|
||||||
|
// "github.com/docker/libtrust"
|
||||||
|
"github.com/rusenask/docker-registry-client/registry"
|
||||||
|
)
|
||||||
|
|
||||||
|
// errors
|
||||||
|
var (
|
||||||
|
ErrTagNotSupplied = errors.New("tag not supplied")
|
||||||
|
)
|
||||||
|
|
||||||
|
type Repository struct {
|
||||||
|
Name string
|
||||||
|
Tags []string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Client interface {
|
||||||
|
}
|
||||||
|
|
||||||
|
func New() *DefaultClient {
|
||||||
|
return &DefaultClient{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type DefaultClient struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type Opts struct {
|
||||||
|
Registry, Name, Tag string
|
||||||
|
Username, Password string // if "" - anonymous
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get - get repository
|
||||||
|
func (c *DefaultClient) Get(opts Opts) (*Repository, error) {
|
||||||
|
|
||||||
|
repo := &Repository{}
|
||||||
|
hub, err := registry.New(opts.Registry, opts.Username, opts.Password)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
tags, err := hub.Tags(opts.Name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
repo.Tags = tags
|
||||||
|
|
||||||
|
return repo, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Digest - get digest for repo
|
||||||
|
func (c *DefaultClient) Digest(opts Opts) (digest string, err error) {
|
||||||
|
if opts.Tag == "" {
|
||||||
|
return "", ErrTagNotSupplied
|
||||||
|
}
|
||||||
|
|
||||||
|
hub, err := registry.New(opts.Registry, opts.Username, opts.Password)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
manifestDigest, err := hub.ManifestDigest(opts.Name, opts.Tag)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return manifestDigest.String(), nil
|
||||||
|
}
|
Loading…
Reference in New Issue