mirror of
				https://github.com/docker/compose.git
				synced 2025-11-04 13:44:48 +01:00 
			
		
		
		
	Also promote init function from returning
interface{} to backend.Service to avoid
typecasting
Signed-off-by: Ulysses Souza <ulyssessouza@gmail.com>
		
	
			
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
	Copyright (c) 2020 Docker Inc.
 | 
						|
 | 
						|
	Permission is hereby granted, free of charge, to any person
 | 
						|
	obtaining a copy of this software and associated documentation
 | 
						|
	files (the "Software"), to deal in the Software without
 | 
						|
	restriction, including without limitation the rights to use, copy,
 | 
						|
	modify, merge, publish, distribute, sublicense, and/or sell copies
 | 
						|
	of the Software, and to permit persons to whom the Software is
 | 
						|
	furnished to do so, subject to the following conditions:
 | 
						|
 | 
						|
	The above copyright notice and this permission notice shall be
 | 
						|
	included in all copies or substantial portions of the Software.
 | 
						|
 | 
						|
	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
						|
	EXPRESS OR IMPLIED,
 | 
						|
	INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						|
	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
						|
	IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 | 
						|
	HOLDERS BE LIABLE FOR ANY CLAIM,
 | 
						|
	DAMAGES OR OTHER LIABILITY,
 | 
						|
	WHETHER IN AN ACTION OF CONTRACT,
 | 
						|
	TORT OR OTHERWISE,
 | 
						|
	ARISING FROM, OUT OF OR IN CONNECTION WITH
 | 
						|
	THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
						|
*/
 | 
						|
 | 
						|
package client
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
 | 
						|
	"github.com/docker/api/backend"
 | 
						|
	backendv1 "github.com/docker/api/backend/v1"
 | 
						|
	cliv1 "github.com/docker/api/cli/v1"
 | 
						|
	"github.com/docker/api/compose"
 | 
						|
	composev1 "github.com/docker/api/compose/v1"
 | 
						|
	"github.com/docker/api/containers"
 | 
						|
	containersv1 "github.com/docker/api/containers/v1"
 | 
						|
	apicontext "github.com/docker/api/context"
 | 
						|
	"github.com/docker/api/context/store"
 | 
						|
)
 | 
						|
 | 
						|
// New returns a backend client
 | 
						|
func New(ctx context.Context) (*Client, error) {
 | 
						|
	currentContext := apicontext.CurrentContext(ctx)
 | 
						|
	s := store.ContextStore(ctx)
 | 
						|
 | 
						|
	cc, err := s.Get(currentContext, nil)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	contextType := s.GetType(cc)
 | 
						|
 | 
						|
	service, err := backend.Get(ctx, contextType)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
 | 
						|
	return &Client{
 | 
						|
		backendType: contextType,
 | 
						|
		bs:          service,
 | 
						|
	}, nil
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
// Client is a multi-backend client
 | 
						|
type Client struct {
 | 
						|
	backendv1.BackendClient
 | 
						|
	cliv1.CliClient
 | 
						|
	containersv1.ContainersClient
 | 
						|
	composev1.ComposeClient
 | 
						|
 | 
						|
	backendType string
 | 
						|
	bs          backend.Service
 | 
						|
}
 | 
						|
 | 
						|
// ContainerService returns the backend service for the current context
 | 
						|
func (c *Client) ContainerService() containers.Service {
 | 
						|
	return c.bs.ContainerService()
 | 
						|
}
 | 
						|
 | 
						|
// ComposeService returns the backend service for the current context
 | 
						|
func (c *Client) ComposeService() compose.Service {
 | 
						|
	return c.bs.ComposeService()
 | 
						|
}
 |