From 10710483070444888abbeef31a555d1f9c80c4d5 Mon Sep 17 00:00:00 2001 From: zongz Date: Tue, 23 Apr 2024 19:31:10 +0800 Subject: [PATCH 1/2] fix: fix download deps from oci url Signed-off-by: zongz --- go.mod | 4 +-- go.sum | 4 +-- pkg/client/client.go | 32 +++++++++++-------- pkg/client/client_test.go | 15 +++++++++ pkg/client/test_data/diffsettings/kcl.mod | 7 ++++ .../test_data/diffsettings/kcl.mod.lock | 0 pkg/client/test_data/diffsettings/main.k | 1 + 7 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 pkg/client/test_data/diffsettings/kcl.mod create mode 100644 pkg/client/test_data/diffsettings/kcl.mod.lock create mode 100644 pkg/client/test_data/diffsettings/main.k diff --git a/go.mod b/go.mod index acd7eaae..86dc40b6 100644 --- a/go.mod +++ b/go.mod @@ -8,10 +8,11 @@ require ( github.com/BurntSushi/toml v1.2.1 github.com/docker/distribution v2.8.2+incompatible github.com/dominikbraun/graph v0.23.0 - github.com/opencontainers/image-spec v1.1.0-rc4 + github.com/opencontainers/image-spec v1.1.0 github.com/otiai10/copy v1.9.0 github.com/sirupsen/logrus v1.9.0 github.com/urfave/cli/v2 v2.25.0 + gopkg.in/yaml.v3 v3.0.1 gotest.tools/v3 v3.4.0 kcl-lang.io/kcl-go v0.8.0 ) @@ -128,7 +129,6 @@ require ( google.golang.org/grpc v1.62.0 // indirect google.golang.org/protobuf v1.32.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect kcl-lang.io/lib v0.8.0 // indirect ) diff --git a/go.sum b/go.sum index 6b62aa77..700d19db 100644 --- a/go.sum +++ b/go.sum @@ -588,8 +588,8 @@ github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= -github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= diff --git a/pkg/client/client.go b/pkg/client/client.go index 40e36e84..16e29937 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -764,31 +764,35 @@ func (c *KpmClient) FillDepInfo(dep *pkg.Dependency, homepath string) error { return nil } if dep.Source.Oci != nil { - dep.Source.Oci.Reg = c.GetSettings().DefaultOciRegistry() - urlpath := utils.JoinPath(c.GetSettings().DefaultOciRepo(), dep.Name) - dep.Source.Oci.Repo = urlpath + if len(dep.Source.Oci.Reg) == 0 { + dep.Source.Oci.Reg = c.GetSettings().DefaultOciRegistry() + } + + if len(dep.Source.Oci.Repo) == 0 { + urlpath := utils.JoinPath(c.GetSettings().DefaultOciRepo(), dep.Name) + dep.Source.Oci.Repo = urlpath + } manifest := ocispec.Manifest{} jsonDesc, err := c.FetchOciManifestIntoJsonStr(opt.OciFetchOptions{ FetchBytesOptions: oras.DefaultFetchBytesOptions, OciOptions: opt.OciOptions{ - Reg: c.GetSettings().DefaultOciRegistry(), - Repo: fmt.Sprintf("%s/%s", c.GetSettings().DefaultOciRepo(), dep.Name), + Reg: dep.Source.Oci.Reg, + Repo: fmt.Sprintf("%s/%s", dep.Source.Oci.Repo, dep.Name), Tag: dep.Version, }, }) - if err != nil { - return err - } + if err == nil { + err = json.Unmarshal([]byte(jsonDesc), &manifest) + if err != nil { + return err + } - err = json.Unmarshal([]byte(jsonDesc), &manifest) - if err != nil { - return err + if value, ok := manifest.Annotations[constants.DEFAULT_KCL_OCI_MANIFEST_SUM]; ok { + dep.Sum = value + } } - if value, ok := manifest.Annotations[constants.DEFAULT_KCL_OCI_MANIFEST_SUM]; ok { - dep.Sum = value - } return nil } return nil diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index 3fe92d79..a81e51f1 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -1422,3 +1422,18 @@ func TestRunGitWithLocalDep(t *testing.T) { assert.Equal(t, gotObj, expectObj) } } + +func TestLoadOciUrlDiffSetting(t *testing.T) { + kpmcli, err := NewKpmClient() + assert.Equal(t, err, nil) + + testPath := getTestDir("diffsettings") + + pkg, err := kpmcli.LoadPkgFromPath(testPath) + assert.Equal(t, err, nil) + assert.Equal(t, len(pkg.ModFile.Deps), 1) + assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Reg, "docker.io") + assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Repo, "test") + assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Tag, "0.0.1") + assert.Equal(t, err, nil) +} diff --git a/pkg/client/test_data/diffsettings/kcl.mod b/pkg/client/test_data/diffsettings/kcl.mod new file mode 100644 index 00000000..cc0e038f --- /dev/null +++ b/pkg/client/test_data/diffsettings/kcl.mod @@ -0,0 +1,7 @@ +[package] +name = "diffsettings" +edition = "v0.8.0" +version = "0.0.1" + +[dependencies] +oci_pkg = { oci = "oci://docker.io/test/oci_pkg", tag = "0.0.1" } diff --git a/pkg/client/test_data/diffsettings/kcl.mod.lock b/pkg/client/test_data/diffsettings/kcl.mod.lock new file mode 100644 index 00000000..e69de29b diff --git a/pkg/client/test_data/diffsettings/main.k b/pkg/client/test_data/diffsettings/main.k new file mode 100644 index 00000000..fa7048e6 --- /dev/null +++ b/pkg/client/test_data/diffsettings/main.k @@ -0,0 +1 @@ +The_first_kcl_program = 'Hello World!' \ No newline at end of file From cc65b50a6e3d727bc3b647e5afdf60b645285daf Mon Sep 17 00:00:00 2001 From: zongz Date: Tue, 23 Apr 2024 19:43:36 +0800 Subject: [PATCH 2/2] fix: fix failed test case Signed-off-by: zongz --- pkg/client/client_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/client/client_test.go b/pkg/client/client_test.go index a81e51f1..c33799ac 100644 --- a/pkg/client/client_test.go +++ b/pkg/client/client_test.go @@ -1433,7 +1433,7 @@ func TestLoadOciUrlDiffSetting(t *testing.T) { assert.Equal(t, err, nil) assert.Equal(t, len(pkg.ModFile.Deps), 1) assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Reg, "docker.io") - assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Repo, "test") + assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Repo, "test/oci_pkg") assert.Equal(t, pkg.ModFile.Deps["oci_pkg"].Oci.Tag, "0.0.1") assert.Equal(t, err, nil) }