1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package resourceadapters
9
"github.com/juju/errors"
10
"gopkg.in/juju/charm.v6-unstable"
11
charmresource "gopkg.in/juju/charm.v6-unstable/resource"
13
"github.com/juju/juju/cmd/juju/charmcmd"
14
"github.com/juju/juju/resource/charmstore"
15
"github.com/juju/juju/resource/cmd"
18
// TODO(ericsnow) Get rid of fakeCharmStoreClient once csclient.Client grows the methods.
20
type baseCharmStoreClient interface {
24
func newFakeCharmStoreClient(base baseCharmStoreClient) charmstore.Client {
25
return &fakeCharmStoreClient{base}
28
type fakeCharmStoreClient struct {
32
// ListResources implements resource/charmstore.Client as a noop.
33
func (fakeCharmStoreClient) ListResources(charmURLs []*charm.URL) ([][]charmresource.Resource, error) {
34
res := make([][]charmresource.Resource, len(charmURLs))
38
// GetResource implements resource/charmstore.Client as a noop.
39
func (fakeCharmStoreClient) GetResource(cURL *charm.URL, resourceName string, revision int) (io.ReadCloser, error) {
40
return nil, errors.NotFoundf("resource %q", resourceName)
43
// Close implements io.Closer.
44
func (client fakeCharmStoreClient) Close() error {
45
if client.baseCharmStoreClient == nil {
48
return client.baseCharmStoreClient.Close()
51
// TODO(ericsnow) Get rid of fakeCharmCmdBase once csclient.Client grows the methods.
53
type fakeCharmCmdBase struct {
57
func NewFakeCharmCmdBase(base *charmcmd.CommandBase) cmd.CharmCommandBase {
58
return &fakeCharmCmdBase{base}
61
// Connect implements cmd.CommandBase.
62
func (c *fakeCharmCmdBase) Connect() (cmd.CharmResourceLister, error) {
63
client, err := c.CommandBase.Connect()
65
return nil, errors.Trace(err)
67
return newFakeCharmStoreClient(client), nil