diff --git a/pkg/api/kpm_pkg.go b/pkg/api/kpm_pkg.go index 6a11e69e..357976fb 100644 --- a/pkg/api/kpm_pkg.go +++ b/pkg/api/kpm_pkg.go @@ -87,6 +87,11 @@ func (pkg *KclPackage) GetDependencies() pkg.Dependencies { return pkg.pkg.Dependencies } +// GetDependenciesInModFile returns the mod file of the package. +func (pkg *KclPackage) GetDependenciesInModFile() *pkg.Dependencies { + return &pkg.pkg.ModFile.Dependencies +} + // GetPkgHomePath returns the home path of the package. func (pkg *KclPackage) GetPkgHomePath() string { return pkg.pkg.HomePath diff --git a/pkg/api/kpm_pkg_test.go b/pkg/api/kpm_pkg_test.go index 9e9df833..084cd099 100644 --- a/pkg/api/kpm_pkg_test.go +++ b/pkg/api/kpm_pkg_test.go @@ -60,6 +60,19 @@ func TestPackageApi(t *testing.T) { assert.Equal(t, schemas[filepath.Join("sub", "sub1")]["SchemaWithSameName"].SchemaName, "SchemaWithSameName") } +func TestApiGetDependenciesInModFile(t *testing.T) { + pkg_path := filepath.Join(getTestDir("test_get_mod_deps"), "kcl_pkg") + pkg, err := GetKclPackage(pkg_path) + assert.Equal(t, err, nil) + dep := pkg.GetDependenciesInModFile().Deps["k8s"] + assert.Equal(t, dep.Name, "k8s") + assert.Equal(t, dep.FullName, "k8s_1.27") + assert.Equal(t, dep.Version, "1.27") + assert.Equal(t, dep.Source.Oci.Reg, "ghcr.io") + assert.Equal(t, dep.Source.Oci.Repo, "kcl-lang/k8s") + assert.Equal(t, dep.Source.Oci.Tag, "1.27") +} + func TestGetAllSchemaTypesMappingNamed(t *testing.T) { pkg_path := filepath.Join(getTestDir("test_kpm_package"), "kcl_pkg") pkg, err := GetKclPackage(pkg_path) diff --git a/pkg/api/test_data/test_get_mod_deps/kcl_pkg/kcl.mod b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/kcl.mod new file mode 100644 index 00000000..d5f23f24 --- /dev/null +++ b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/kcl.mod @@ -0,0 +1,7 @@ +[package] +name = "kcl_pkg" +edition = "0.0.1" +version = "0.0.1" + +[dependencies] +k8s = "1.27" diff --git a/pkg/api/test_data/test_get_mod_deps/kcl_pkg/main.k b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/main.k new file mode 100644 index 00000000..82cfb7f9 --- /dev/null +++ b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/main.k @@ -0,0 +1,34 @@ +import sub +import sub.sub1 as s1 +import k8s.api.core.v1 as k8core + +schema SchemaInMainK: + msg: str + +schema SchemaWithSameName: + msg: str + +schema_in_main_k = SchemaInMainK { + msg='I am the instance of SchemaInMainK' +} + +schema_in_sub_k = sub.SchemaInSubK { + msg='I am the instance of SchemaInSubK' +} + +schema_with_same_name = SchemaWithSameName { + msg='I am the instance of SchemaWithSameName in main.k' +} + +schema_with_same_name_in_sub = s1.SchemaWithSameName { + msg='I am the instance of SchemaWithSameName in sub.k' +} + +schema_in_k8s = k8core.Pod { + metadata.name = "web-app" + spec.containers = [{ + name = "main-container" + image = "nginx" + ports = [{containerPort: 80}] + }] +} \ No newline at end of file diff --git a/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/main.k b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/main.k new file mode 100644 index 00000000..f67b6693 --- /dev/null +++ b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/main.k @@ -0,0 +1,2 @@ +schema SchemaInSubK: + msg: str diff --git a/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main.k b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main.k new file mode 100644 index 00000000..8ddf2a1f --- /dev/null +++ b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main.k @@ -0,0 +1,2 @@ +schema SchemaInSubSub1K: + msg: str diff --git a/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main2.k b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main2.k new file mode 100644 index 00000000..86ba216e --- /dev/null +++ b/pkg/api/test_data/test_get_mod_deps/kcl_pkg/sub/sub1/main2.k @@ -0,0 +1,2 @@ +schema SchemaWithSameName: + msg: str \ No newline at end of file