mirror of
https://github.com/docker/compose.git
synced 2025-11-16 20:00:21 +01:00
make DRYRUN_PREFIX a display attribute, move DryRunClient out of pkg/api
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
aff5c115d6
commit
45def51117
21
cmd/display/dryrun.go
Normal file
21
cmd/display/dryrun.go
Normal file
@ -0,0 +1,21 @@
|
||||
/*
|
||||
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 display
|
||||
|
||||
const (
|
||||
DRYRUN_PREFIX = " DRY-RUN MODE - "
|
||||
)
|
||||
@ -41,7 +41,7 @@ func (p *plainWriter) Start(ctx context.Context, operation string) {
|
||||
func (p *plainWriter) Event(e api.Resource) {
|
||||
prefix := ""
|
||||
if p.dryRun {
|
||||
prefix = api.DRYRUN_PREFIX
|
||||
prefix = DRYRUN_PREFIX
|
||||
}
|
||||
_, _ = fmt.Fprintln(p.out, prefix, e.ID, e.Text, e.Details)
|
||||
}
|
||||
|
||||
@ -286,7 +286,7 @@ func (w *ttyWriter) lineText(t task, pad string, terminalWidth, statusPadding in
|
||||
}
|
||||
prefix := ""
|
||||
if dryRun {
|
||||
prefix = PrefixColor(api.DRYRUN_PREFIX)
|
||||
prefix = PrefixColor(DRYRUN_PREFIX)
|
||||
}
|
||||
|
||||
elapsed := endTime.Sub(t.startTime).Seconds()
|
||||
|
||||
@ -31,6 +31,7 @@ import (
|
||||
"github.com/docker/cli/cli/config/configfile"
|
||||
"github.com/docker/cli/cli/flags"
|
||||
"github.com/docker/cli/cli/streams"
|
||||
"github.com/docker/compose/v2/pkg/dryrun"
|
||||
"github.com/docker/docker/api/types/container"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
"github.com/docker/docker/api/types/network"
|
||||
@ -173,7 +174,7 @@ func WithDryRun(s *composeService) error {
|
||||
options := flags.NewClientOptions()
|
||||
options.Context = s.dockerCli.CurrentContext()
|
||||
err = cli.Initialize(options, command.WithInitializeClient(func(cli *command.DockerCli) (client.APIClient, error) {
|
||||
return api.NewDryRunClient(s.apiClient(), s.dockerCli)
|
||||
return dryrun.NewDryRunClient(s.apiClient(), s.dockerCli)
|
||||
}))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package api
|
||||
package dryrun
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@ -50,10 +50,6 @@ import (
|
||||
specs "github.com/opencontainers/image-spec/specs-go/v1"
|
||||
)
|
||||
|
||||
const (
|
||||
DRYRUN_PREFIX = " DRY-RUN MODE - "
|
||||
)
|
||||
|
||||
var _ client.APIClient = &DryRunClient{}
|
||||
|
||||
// DryRunClient implements APIClient by delegating to implementation functions. This allows lazy init and per-method overrides
|
||||
@ -192,28 +188,17 @@ func (d *DryRunClient) ContainerUnpause(ctx context.Context, container string) e
|
||||
func (d *DryRunClient) CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, containerType.PathStat, error) {
|
||||
rc := io.NopCloser(strings.NewReader(""))
|
||||
if _, err := d.ContainerStatPath(ctx, container, srcPath); err != nil {
|
||||
return rc, containerType.PathStat{}, fmt.Errorf(" %s Could not find the file %s in container %s", DRYRUN_PREFIX, srcPath, container)
|
||||
return rc, containerType.PathStat{}, fmt.Errorf("could not find the file %s in container %s", srcPath, container)
|
||||
}
|
||||
return rc, containerType.PathStat{}, nil
|
||||
}
|
||||
|
||||
func (d *DryRunClient) CopyToContainer(ctx context.Context, container, path string, content io.Reader, options containerType.CopyToContainerOptions) error {
|
||||
if _, err := d.ContainerStatPath(ctx, container, path); err != nil {
|
||||
return fmt.Errorf(" %s Could not find the file %s in container %s", DRYRUN_PREFIX, path, container)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *DryRunClient) ImageBuild(ctx context.Context, reader io.Reader, options build.ImageBuildOptions) (build.ImageBuildResponse, error) {
|
||||
jsonMessage, err := json.Marshal(&jsonmessage.JSONMessage{
|
||||
Status: fmt.Sprintf("%[1]sSuccessfully built: dryRunID\n%[1]sSuccessfully tagged: %[2]s\n", DRYRUN_PREFIX, options.Tags[0]),
|
||||
Progress: &jsonmessage.JSONProgress{},
|
||||
ID: "",
|
||||
})
|
||||
if err != nil {
|
||||
return build.ImageBuildResponse{}, err
|
||||
}
|
||||
rc := io.NopCloser(bytes.NewReader(jsonMessage))
|
||||
rc := io.NopCloser(bytes.NewReader(nil))
|
||||
|
||||
return build.ImageBuildResponse{
|
||||
Body: rc,
|
||||
@ -321,12 +306,10 @@ func (d *DryRunClient) ContainerExecCreate(ctx context.Context, container string
|
||||
}
|
||||
|
||||
func (d *DryRunClient) ContainerExecStart(ctx context.Context, execID string, config containerType.ExecStartOptions) error {
|
||||
v, ok := d.execs.LoadAndDelete(execID)
|
||||
_, ok := d.execs.LoadAndDelete(execID)
|
||||
if !ok {
|
||||
return fmt.Errorf("invalid exec ID %q", execID)
|
||||
}
|
||||
details := v.(execDetails)
|
||||
fmt.Printf("%sExecuting command %q in %s (detached mode)\n", DRYRUN_PREFIX, details.command, details.container)
|
||||
return nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user