mirror of
https://github.com/containers/skopeo.git
synced 2025-09-02 15:15:26 +00:00
38
inspect.go
38
inspect.go
@@ -2,34 +2,54 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/codegangsta/cli"
|
"github.com/codegangsta/cli"
|
||||||
"github.com/runcom/skopeo/docker"
|
"github.com/runcom/skopeo/docker"
|
||||||
"github.com/runcom/skopeo/types"
|
"github.com/runcom/skopeo/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type imgKind int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
imgTypeDocker = "docker"
|
imgTypeDocker = "docker://"
|
||||||
imgTypeAppc = "appc"
|
imgTypeAppc = "appc://"
|
||||||
|
|
||||||
|
kindUnknown = iota
|
||||||
|
kindDocker
|
||||||
|
kindAppc
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func getImgType(img string) imgKind {
|
||||||
|
if strings.HasPrefix(img, imgTypeDocker) {
|
||||||
|
return kindDocker
|
||||||
|
}
|
||||||
|
if strings.HasPrefix(img, imgTypeAppc) {
|
||||||
|
return kindAppc
|
||||||
|
}
|
||||||
|
// TODO(runcom): v2 will support this
|
||||||
|
//return kindUnknown
|
||||||
|
return kindDocker
|
||||||
|
}
|
||||||
|
|
||||||
func inspect(c *cli.Context) (*types.ImageInspect, error) {
|
func inspect(c *cli.Context) (*types.ImageInspect, error) {
|
||||||
var (
|
var (
|
||||||
imgInspect *types.ImageInspect
|
imgInspect *types.ImageInspect
|
||||||
err error
|
err error
|
||||||
name = c.Args().First()
|
name = c.Args().First()
|
||||||
imgType = c.GlobalString("img-type")
|
kind = getImgType(name)
|
||||||
)
|
)
|
||||||
switch imgType {
|
|
||||||
case imgTypeDocker:
|
switch kind {
|
||||||
imgInspect, err = docker.GetData(c, name)
|
case kindDocker:
|
||||||
|
imgInspect, err = docker.GetData(c, strings.Replace(name, imgTypeDocker, "", -1))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
case imgTypeAppc:
|
case kindAppc:
|
||||||
return nil, fmt.Errorf("sorry, not implemented yet")
|
return nil, fmt.Errorf("not implemented yet")
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("%s image type is invalid, please use either 'docker' or 'appc'", imgType)
|
return nil, fmt.Errorf("%s image is invalid, please use either 'docker://' or 'appc://'", name)
|
||||||
}
|
}
|
||||||
return imgInspect, nil
|
return imgInspect, nil
|
||||||
}
|
}
|
||||||
|
5
main.go
5
main.go
@@ -52,11 +52,6 @@ func main() {
|
|||||||
Value: cliconfig.ConfigDir(),
|
Value: cliconfig.ConfigDir(),
|
||||||
Usage: "Docker's cli config for auth",
|
Usage: "Docker's cli config for auth",
|
||||||
},
|
},
|
||||||
cli.StringFlag{
|
|
||||||
Name: "img-type",
|
|
||||||
Value: imgTypeDocker,
|
|
||||||
Usage: "Either docker or appc",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
app.Before = func(c *cli.Context) error {
|
app.Before = func(c *cli.Context) error {
|
||||||
if c.GlobalBool("debug") {
|
if c.GlobalBool("debug") {
|
||||||
|
Reference in New Issue
Block a user