mirror of https://github.com/docker/cli.git
cli/command/image: remove use of docker/docker/pkg/urlutil
pkg/urlutil (despite its poorly chosen name) is not really intended as a generic utility to handle URLs, and should only be used by the builder to handle (remote) build contexts. The `IsURL()` function only does a very rudimentary check for `http(s)://` prefixes, without any other validation, but due to its name may give incorrect expectations. As we're deprecating this package for uses other than for build-contexts, this patch replaces this instance of the utility for a local function. While changing, also cleaned up some intermediate variables, and made the logic slightly more descriptive. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
e0fba5ea2d
commit
052b4086b9
|
@ -2,15 +2,14 @@ package image
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/docker/cli/cli"
|
"github.com/docker/cli/cli"
|
||||||
"github.com/docker/cli/cli/command"
|
"github.com/docker/cli/cli/command"
|
||||||
dockeropts "github.com/docker/cli/opts"
|
dockeropts "github.com/docker/cli/opts"
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/pkg/jsonmessage"
|
"github.com/docker/docker/pkg/jsonmessage"
|
||||||
"github.com/docker/docker/pkg/urlutil"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -50,37 +49,37 @@ func NewImportCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
func runImport(dockerCli command.Cli, options importOptions) error {
|
func runImport(dockerCli command.Cli, options importOptions) error {
|
||||||
var (
|
var source types.ImageImportSource
|
||||||
in io.Reader
|
switch {
|
||||||
srcName = options.source
|
case options.source == "-":
|
||||||
)
|
// import from STDIN
|
||||||
|
source = types.ImageImportSource{
|
||||||
if options.source == "-" {
|
Source: dockerCli.In(),
|
||||||
in = dockerCli.In()
|
SourceName: options.source,
|
||||||
} else if !urlutil.IsURL(options.source) {
|
}
|
||||||
srcName = "-"
|
case strings.HasPrefix(options.source, "https://"), strings.HasPrefix(options.source, "http://"):
|
||||||
|
// import from a remote source (handled by the daemon)
|
||||||
|
source = types.ImageImportSource{
|
||||||
|
SourceName: options.source,
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// import from a local file
|
||||||
file, err := os.Open(options.source)
|
file, err := os.Open(options.source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
in = file
|
source = types.ImageImportSource{
|
||||||
|
Source: file,
|
||||||
|
SourceName: "-",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
source := types.ImageImportSource{
|
responseBody, err := dockerCli.Client().ImageImport(context.Background(), source, options.reference, types.ImageImportOptions{
|
||||||
Source: in,
|
|
||||||
SourceName: srcName,
|
|
||||||
}
|
|
||||||
|
|
||||||
importOptions := types.ImageImportOptions{
|
|
||||||
Message: options.message,
|
Message: options.message,
|
||||||
Changes: options.changes.GetAll(),
|
Changes: options.changes.GetAll(),
|
||||||
Platform: options.platform,
|
Platform: options.platform,
|
||||||
}
|
})
|
||||||
|
|
||||||
clnt := dockerCli.Client()
|
|
||||||
|
|
||||||
responseBody, err := clnt.ImageImport(context.Background(), source, options.reference, importOptions)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue