diff --git a/cmd/ctr/commands/images/pull.go b/cmd/ctr/commands/images/pull.go index 6ca88df9f..93aa63385 100644 --- a/cmd/ctr/commands/images/pull.go +++ b/cmd/ctr/commands/images/pull.go @@ -25,6 +25,7 @@ import ( "github.com/containerd/containerd/images" "github.com/containerd/containerd/log" "github.com/containerd/containerd/platforms" + "github.com/opencontainers/image-spec/identity" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" "github.com/urfave/cli" @@ -57,6 +58,10 @@ command. As part of this process, we do the following: Name: "all-metadata", Usage: "Pull metadata for all platforms", }, + cli.BoolFlag{ + Name: "print-chainid", + Usage: "Print the resulting image's chain ID", + }, ), Action: func(context *cli.Context) error { var ( @@ -118,6 +123,14 @@ command. As part of this process, we do the following: if err != nil { return err } + if context.Bool("print-chainid") { + diffIDs, err := i.RootFS(ctx) + if err != nil { + return err + } + chainID := identity.ChainID(diffIDs).String() + fmt.Printf("image chain ID: %s\n", chainID) + } } fmt.Println("done") diff --git a/cmd/ctr/commands/snapshots/snapshots.go b/cmd/ctr/commands/snapshots/snapshots.go index 10e1c61bb..cb8f05924 100644 --- a/cmd/ctr/commands/snapshots/snapshots.go +++ b/cmd/ctr/commands/snapshots/snapshots.go @@ -280,6 +280,10 @@ var prepareCommand = cli.Command{ Name: "target, t", Usage: "mount target path, will print mount, if provided", }, + cli.BoolFlag{ + Name: "mounts", + Usage: "Print out snapshot mounts as JSON", + }, }, Action: func(context *cli.Context) error { if narg := context.NArg(); narg < 1 || narg > 2 { @@ -310,6 +314,10 @@ var prepareCommand = cli.Command{ printMounts(target, mounts) } + if context.Bool("mounts") { + commands.PrintAsJSON(mounts) + } + return nil }, } @@ -323,6 +331,10 @@ var viewCommand = cli.Command{ Name: "target, t", Usage: "mount target path, will print mount, if provided", }, + cli.BoolFlag{ + Name: "mounts", + Usage: "Print out snapshot mounts as JSON", + }, }, Action: func(context *cli.Context) error { if narg := context.NArg(); narg < 1 || narg > 2 { @@ -349,6 +361,10 @@ var viewCommand = cli.Command{ printMounts(target, mounts) } + if context.Bool("mounts") { + commands.PrintAsJSON(mounts) + } + return nil }, }