|
@@ -0,0 +1,143 @@
|
|
|
+/*
|
|
|
+ Copyright 2020 Docker Compose CLI authors
|
|
|
+
|
|
|
+ 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 compose
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+
|
|
|
+ "github.com/compose-spec/compose-go/types"
|
|
|
+)
|
|
|
+
|
|
|
+// ServiceDelegator implements Service by delegating to another implementation. This allows lazy init
|
|
|
+type ServiceDelegator struct {
|
|
|
+ Delegate Service
|
|
|
+}
|
|
|
+
|
|
|
+//Build implements Service interface
|
|
|
+func (s *ServiceDelegator) Build(ctx context.Context, project *types.Project, options BuildOptions) error {
|
|
|
+ return s.Delegate.Build(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Push implements Service interface
|
|
|
+func (s *ServiceDelegator) Push(ctx context.Context, project *types.Project, options PushOptions) error {
|
|
|
+ return s.Delegate.Push(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Pull implements Service interface
|
|
|
+func (s *ServiceDelegator) Pull(ctx context.Context, project *types.Project, options PullOptions) error {
|
|
|
+ return s.Delegate.Pull(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Create implements Service interface
|
|
|
+func (s *ServiceDelegator) Create(ctx context.Context, project *types.Project, options CreateOptions) error {
|
|
|
+ return s.Delegate.Create(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Start implements Service interface
|
|
|
+func (s *ServiceDelegator) Start(ctx context.Context, project *types.Project, options StartOptions) error {
|
|
|
+ return s.Delegate.Start(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Restart implements Service interface
|
|
|
+func (s *ServiceDelegator) Restart(ctx context.Context, project *types.Project, options RestartOptions) error {
|
|
|
+ return s.Delegate.Restart(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Stop implements Service interface
|
|
|
+func (s *ServiceDelegator) Stop(ctx context.Context, project *types.Project, options StopOptions) error {
|
|
|
+ return s.Delegate.Stop(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Up implements Service interface
|
|
|
+func (s *ServiceDelegator) Up(ctx context.Context, project *types.Project, options UpOptions) error {
|
|
|
+ return s.Delegate.Up(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Down implements Service interface
|
|
|
+func (s *ServiceDelegator) Down(ctx context.Context, project string, options DownOptions) error {
|
|
|
+ return s.Delegate.Down(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Logs implements Service interface
|
|
|
+func (s *ServiceDelegator) Logs(ctx context.Context, project string, consumer LogConsumer, options LogOptions) error {
|
|
|
+ return s.Delegate.Logs(ctx, project, consumer, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Ps implements Service interface
|
|
|
+func (s *ServiceDelegator) Ps(ctx context.Context, project string, options PsOptions) ([]ContainerSummary, error) {
|
|
|
+ return s.Delegate.Ps(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//List implements Service interface
|
|
|
+func (s *ServiceDelegator) List(ctx context.Context, options ListOptions) ([]Stack, error) {
|
|
|
+ return s.Delegate.List(ctx, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Convert implements Service interface
|
|
|
+func (s *ServiceDelegator) Convert(ctx context.Context, project *types.Project, options ConvertOptions) ([]byte, error) {
|
|
|
+ return s.Delegate.Convert(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Kill implements Service interface
|
|
|
+func (s *ServiceDelegator) Kill(ctx context.Context, project *types.Project, options KillOptions) error {
|
|
|
+ return s.Delegate.Kill(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//RunOneOffContainer implements Service interface
|
|
|
+func (s *ServiceDelegator) RunOneOffContainer(ctx context.Context, project *types.Project, options RunOptions) (int, error) {
|
|
|
+ return s.Delegate.RunOneOffContainer(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Remove implements Service interface
|
|
|
+func (s *ServiceDelegator) Remove(ctx context.Context, project *types.Project, options RemoveOptions) ([]string, error) {
|
|
|
+ return s.Delegate.Remove(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Exec implements Service interface
|
|
|
+func (s *ServiceDelegator) Exec(ctx context.Context, project *types.Project, options RunOptions) error {
|
|
|
+ return s.Delegate.Exec(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Pause implements Service interface
|
|
|
+func (s *ServiceDelegator) Pause(ctx context.Context, project string, options PauseOptions) error {
|
|
|
+ return s.Delegate.Pause(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//UnPause implements Service interface
|
|
|
+func (s *ServiceDelegator) UnPause(ctx context.Context, project string, options PauseOptions) error {
|
|
|
+ return s.Delegate.UnPause(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Top implements Service interface
|
|
|
+func (s *ServiceDelegator) Top(ctx context.Context, project string, services []string) ([]ContainerProcSummary, error) {
|
|
|
+ return s.Delegate.Top(ctx, project, services)
|
|
|
+}
|
|
|
+
|
|
|
+//Events implements Service interface
|
|
|
+func (s *ServiceDelegator) Events(ctx context.Context, project string, options EventsOptions) error {
|
|
|
+ return s.Delegate.Events(ctx, project, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Port implements Service interface
|
|
|
+func (s *ServiceDelegator) Port(ctx context.Context, project string, service string, port int, options PortOptions) (string, int, error) {
|
|
|
+ return s.Delegate.Port(ctx, project, service, port, options)
|
|
|
+}
|
|
|
+
|
|
|
+//Images implements Service interface
|
|
|
+func (s *ServiceDelegator) Images(ctx context.Context, project string, options ImagesOptions) ([]ImageSummary, error) {
|
|
|
+ return s.Delegate.Images(ctx, project, options)
|
|
|
+}
|