From fe1b9a087908271af78fd8ef934cf8a5a4fa23aa Mon Sep 17 00:00:00 2001 From: Horiodino Date: Mon, 17 Jun 2024 23:25:12 +0530 Subject: [PATCH] load-podman Signed-off-by: Horiodino --- cmd/oci/oci.go | 15 +++++++++++++-- pkg/oci/skopeo.go | 13 +++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/cmd/oci/oci.go b/cmd/oci/oci.go index 6b83bdcf..956c46a9 100644 --- a/cmd/oci/oci.go +++ b/cmd/oci/oci.go @@ -22,8 +22,8 @@ import ( ) var ( - platform, output string - push, loadDocker bool + platform, output string + push, loadDocker, loadPodman bool ) var ( supportedPlatforms = []string{"linux/amd64", "linux/arm64"} @@ -154,6 +154,16 @@ var OCICmd = &cobra.Command{ } + if loadPodman { + fmt.Println(styles.HighlightStyle.Render("Loading image to podman...")) + err = oci.LoadPodman(output+"/result", env.Name) + if err != nil { + fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) + os.Exit(1) + } + fmt.Println(styles.SucessStyle.Render(fmt.Sprintf("Image %s loaded to podman", env.Name))) + } + if push { fmt.Println(styles.HighlightStyle.Render("Pushing image to registry...")) err = oci.Push(output+"/result", env.Name) @@ -248,6 +258,7 @@ func init() { OCICmd.Flags().StringVarP(&platform, "platform", "p", "", "The platform to build the image for") OCICmd.Flags().StringVarP(&output, "output", "o", "", "location of the build artifacts generated") OCICmd.Flags().BoolVarP(&loadDocker, "load-docker", "", false, "Load the image into docker daemon") + OCICmd.Flags().BoolVarP(&loadPodman, "load-podman", "", false, "Load the image into podman") OCICmd.Flags().BoolVarP(&push, "push", "", false, "Push the image to the registry") } diff --git a/pkg/oci/skopeo.go b/pkg/oci/skopeo.go index a6663040..af8c0e9c 100644 --- a/pkg/oci/skopeo.go +++ b/pkg/oci/skopeo.go @@ -18,6 +18,19 @@ func LoadDocker(daemon, dir, imageName string) error { return nil } +// LoadPodman loads the image to the poadman +func LoadPodman(dir, imageName string) error { + cmd := exec.Command("nix", "run", "nixpkgs#skopeo", "--", "copy", "--insecure-policy", "dir:"+dir, "containers-storage:"+imageName) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + err := cmd.Run() + if err != nil { + return err + } + + return nil +} + // Push image to registry func Push(dir, imageName string) error { cmd := exec.Command("nix", "run", "nixpkgs#skopeo", "--", "copy", "--insecure-policy", "dir:"+dir, "docker://"+imageName)