From 2b6d852b285bf2bda9c5f8b7d2f75b6559d6c4ed Mon Sep 17 00:00:00 2001 From: Horiodino Date: Tue, 12 Nov 2024 13:07:44 +0530 Subject: [PATCH] fix --df-swap functionality for bsf oci #119 Signed-off-by: Horiodino --- cmd/oci/oci.go | 22 +++++++++++------ pkg/builddocker/build.go | 13 +++------- pkg/builddocker/build_test.go | 46 ++++++++++++----------------------- 3 files changed, 34 insertions(+), 47 deletions(-) diff --git a/cmd/oci/oci.go b/cmd/oci/oci.go index 50dc6a81..ca5339ab 100644 --- a/cmd/oci/oci.go +++ b/cmd/oci/oci.go @@ -24,9 +24,8 @@ var ( platform, output, tag, path, destcreds string push, loadDocker, loadPodman, devDeps, dfSwap, digest bool ) -var ( - supportedPlatforms = []string{"linux/amd64", "linux/arm64"} -) + +var supportedPlatforms = []string{"linux/amd64", "linux/arm64"} func init() { OCICmd.Flags().StringVarP(&platform, "platform", "p", "", "The platform to build the image for") @@ -83,9 +82,18 @@ var OCICmd = &cobra.Command{ artifact.Name = newName } + var ociArtifactName string + + for _, ociArtifact := range conf.OCIArtifact { + if ociArtifact.Artifact == args[0] { + prefix := strings.Split(ociArtifact.Name, ":")[0] + ociArtifactName = prefix + } + } + if dfSwap { if tag != "" { - if err = modifyDockerfileWithTag(path, tag); err != nil { + if err = modifyDockerfileWithTag(path, tag, ociArtifactName); err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } @@ -93,7 +101,6 @@ var OCICmd = &cobra.Command{ } else { fmt.Println(styles.HintStyle.Render("hint:", "use --tag flag to define a tag")) } - os.Exit(1) } sc, fh, err := binit.GetBSFInitializers() @@ -102,7 +109,6 @@ var OCICmd = &cobra.Command{ os.Exit(1) } err = generate.Generate(fh, sc) - if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) @@ -278,7 +284,7 @@ func ProcessPlatformAndConfig(conf *hcl2nix.Config, plat string, envName string) return artifact, plat, nil } -func modifyDockerfileWithTag(path, tag string) error { +func modifyDockerfileWithTag(path, tag, ociArtifactName string) error { var dockerfilePath string if path != "" { dockerfilePath = path + "/Dockerfile" @@ -292,7 +298,7 @@ func modifyDockerfileWithTag(path, tag string) error { } defer file.Close() - resLines, err := builddocker.ModifyDockerfile(file, devDeps, tag) + resLines, err := builddocker.ModifyDockerfile(file, ociArtifactName, tag) if err != nil { return err } diff --git a/pkg/builddocker/build.go b/pkg/builddocker/build.go index 4aa50de5..0a41e997 100644 --- a/pkg/builddocker/build.go +++ b/pkg/builddocker/build.go @@ -42,17 +42,16 @@ func GenerateDockerfile(w io.Writer, env hcl2nix.OCIArtifact, platform string) e } return nil - } // ModifyDockerfile modifies the Dockerfile with the specified tag -func ModifyDockerfile(file *os.File, dev bool, tag string) ([]string, error) { +func ModifyDockerfile(file *os.File, ociArgument string, tag string) ([]string, error) { lines, err := readDockerFile(file) if err != nil { return nil, err } - reslines, err := editDockerfile(lines, dev, tag) + reslines, err := editDockerfile(lines, ociArgument, tag) if err != nil { return nil, err } @@ -72,13 +71,9 @@ func readDockerFile(file *os.File) ([]string, error) { return lines, nil } -func editDockerfile(lines []string, dev bool, tag string) ([]string, error) { +func editDockerfile(lines []string, ociArtifactName, tag string) ([]string, error) { var searchTag string - if dev { - searchTag = "bsfimage:dev" - } else { - searchTag = "bsfimage:runtime" - } + searchTag = ociArtifactName var selectedFrom string var selectedIndex int diff --git a/pkg/builddocker/build_test.go b/pkg/builddocker/build_test.go index 405a28d3..3f6fa9c6 100644 --- a/pkg/builddocker/build_test.go +++ b/pkg/builddocker/build_test.go @@ -8,58 +8,44 @@ import ( func TestEditDockerFile(t *testing.T) { tests := []struct { - name string - lines []string - isDev bool - tag string - expectedRes []string - expectError bool + ociArtifactName string + name string + lines []string + tag string + expectedRes []string + expectError bool }{ { - name: "Dev", + name: "FROM Command with bsf tag", + ociArtifactName: "docker.io/buildsafe/bsf", lines: []string{ - "FROM ubuntu:18.04 # bsfimage:dev", + "FROM docker.io/buildsafe/bsf:v1.1.1 AS build", "RUN apt-get update", }, - isDev: true, - tag: "latest", + tag: "latest", expectedRes: []string{ - "FROM ubuntu:latest # bsfimage:dev", + "FROM docker.io/buildsafe/bsf:latest AS build", "RUN apt-get update", }, expectError: false, }, { - name: "Runtime", - lines: []string{ - "FROM ubuntu:18.04 # bsfimage:runtime", - "RUN apt-get update", - }, - isDev: false, - tag: "latest", - expectedRes: []string{ - "FROM ubuntu:latest # bsfimage:runtime", - "RUN apt-get update", - }, - expectError: false, - }, - { - name: "No FROM Command with bsf tag", + name: "No FROM Command with bsf tag", + ociArtifactName: "docker.io/buildsafe/bsf", lines: []string{ "FROM ubuntu:latest", "RUN apt-get update", }, - isDev: true, tag: "latest", expectedRes: nil, expectError: true, }, { - name: "No FROM Command", + name: "No FROM Command", + ociArtifactName: "docker.io/buildsafe/bsf", lines: []string{ "RUN apt-get update", }, - isDev: true, tag: "latest", expectedRes: nil, expectError: true, @@ -68,7 +54,7 @@ func TestEditDockerFile(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - res, err := editDockerfile(tt.lines, tt.isDev, tt.tag) + res, err := editDockerfile(tt.lines, tt.ociArtifactName, tt.tag) if tt.expectError { assert.Error(t, err) } else {