Skip to content

Commit

Permalink
unpack local file bundle
Browse files Browse the repository at this point in the history
  • Loading branch information
santhoshdaivajna committed Feb 1, 2023
1 parent 5d37518 commit 11df83d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
*.swp
.idea/
luet
tests/integration/shunit2
tests/integration/bin
Expand Down
27 changes: 22 additions & 5 deletions pkg/helpers/docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ import (
"encoding/hex"
"net/http"
"os"
"strings"

v1 "github.com/google/go-containerregistry/pkg/v1"
"github.com/google/go-containerregistry/pkg/v1/tarball"

"github.com/containerd/containerd/images"
luetimages "github.com/mudler/luet/pkg/api/core/image"
Expand All @@ -42,6 +46,11 @@ import (
"github.com/theupdateframework/notary/tuf/data"
)

const (
filePrefix = "file://"
fileImageSeparator = ":/"
)

// See also https://github.com/docker/cli/blob/88c6089300a82d3373892adf6845a4fed1a4ba8d/cli/command/image/trust.go#L171

func verifyImage(image string, authConfig *types.AuthConfig) (string, error) {
Expand Down Expand Up @@ -196,18 +205,26 @@ func DownloadAndExtractDockerImage(ctx luettypes.Context, image, dest string, au
}

func ExtractDockerImage(ctx luettypes.Context, local, dest string) (*images.Image, error) {
var img v1.Image
if !fileHelper.Exists(dest) {
if err := os.MkdirAll(dest, os.ModePerm); err != nil {
return nil, errors.Wrapf(err, "cannot create destination directory")
}
}

ref, err := name.ParseReference(local)
if err != nil {
return nil, err
var err error
if strings.HasPrefix(local, filePrefix) {
parts := strings.Split(local, fileImageSeparator)
if len(parts) == 2 && parts[1] != "" {
img, err = tarball.ImageFromPath(parts[1], nil)
}
} else {
ref, err := name.ParseReference(local)
if err != nil {
return nil, err
}
img, err = daemon.Image(ref)
}

img, err := daemon.Image(ref)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit 11df83d

Please sign in to comment.