From bf4f21683c7880120f173155d1318c99ff7c69e3 Mon Sep 17 00:00:00 2001 From: peefy Date: Wed, 16 Oct 2024 10:32:57 +0800 Subject: [PATCH] fix: krm-kcl to support the print output to the pod log and add tests Signed-off-by: peefy --- .github/workflows/ci.yaml | 2 +- examples/default/debug_print/Makefile | 2 + examples/default/debug_print/README.md | 113 ++++++++++++++++++ examples/default/debug_print/composition.yaml | 69 +++++++++++ examples/default/debug_print/functions.yaml | 9 ++ examples/default/debug_print/xr.yaml | 6 + go.mod | 17 ++- go.sum | 34 +++--- 8 files changed, 224 insertions(+), 28 deletions(-) create mode 100644 examples/default/debug_print/Makefile create mode 100644 examples/default/debug_print/README.md create mode 100644 examples/default/debug_print/composition.yaml create mode 100644 examples/default/debug_print/functions.yaml create mode 100644 examples/default/debug_print/xr.yaml diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 49f571c..f89da0c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -35,7 +35,7 @@ env: XPKG: xpkg.upbound.io/${{ github.repository}} # The package version to push. The default is 0.0.0-gitsha. - XPKG_VERSION: v0.10.1 + XPKG_VERSION: v0.10.2 jobs: lint: diff --git a/examples/default/debug_print/Makefile b/examples/default/debug_print/Makefile new file mode 100644 index 0000000..d4d1dc0 --- /dev/null +++ b/examples/default/debug_print/Makefile @@ -0,0 +1,2 @@ +run: + crossplane render xr.yaml composition.yaml functions.yaml -r diff --git a/examples/default/debug_print/README.md b/examples/default/debug_print/README.md new file mode 100644 index 0000000..1b9a57e --- /dev/null +++ b/examples/default/debug_print/README.md @@ -0,0 +1,113 @@ +# Example Manifests + +You can run your function locally and test it using `crossplane render` +with these example manifests. + +```shell +# Run the function locally +$ go run . --insecure --debug +``` + +```shell +# Then, in another terminal, call it with these example manifests +$ crossplane render xr.yaml composition.yaml functions.yaml -r +--- +apiVersion: example.crossplane.io/v1beta1 +kind: XR +metadata: + name: example +status: + dummy: cool-status +--- +apiVersion: iam.aws.upbound.io/v1beta1 +kind: AccessKey +metadata: + annotations: + crossplane.io/composition-resource-name: sample-access-key-1 + generateName: example- + labels: + crossplane.io/composite: example + name: sample-access-key-1 + ownerReferences: + - apiVersion: example.crossplane.io/v1beta1 + blockOwnerDeletion: true + controller: true + kind: XR + name: example + uid: "" +spec: + forProvider: + userSelector: + matchLabels: + testing.upbound.io/example-name: test-user-1 + writeConnectionSecretToRef: + name: sample-access-key-secret-1 + namespace: crossplane-system +--- +apiVersion: iam.aws.upbound.io/v1beta1 +kind: User +metadata: + annotations: + crossplane.io/composition-resource-name: test-user-0 + generateName: example- + labels: + crossplane.io/composite: example + dummy: foo + testing.upbound.io/example-name: test-user-0 + name: test-user-0 + ownerReferences: + - apiVersion: example.crossplane.io/v1beta1 + blockOwnerDeletion: true + controller: true + kind: XR + name: example + uid: "" +spec: + forProvider: {} +--- +apiVersion: iam.aws.upbound.io/v1beta1 +kind: AccessKey +metadata: + annotations: + crossplane.io/composition-resource-name: sample-access-key-0 + generateName: example- + labels: + crossplane.io/composite: example + name: sample-access-key-0 + ownerReferences: + - apiVersion: example.crossplane.io/v1beta1 + blockOwnerDeletion: true + controller: true + kind: XR + name: example + uid: "" +spec: + forProvider: + userSelector: + matchLabels: + testing.upbound.io/example-name: test-user-0 + writeConnectionSecretToRef: + name: sample-access-key-secret-0 + namespace: crossplane-system +--- +apiVersion: iam.aws.upbound.io/v1beta1 +kind: User +metadata: + annotations: + crossplane.io/composition-resource-name: test-user-1 + generateName: example- + labels: + crossplane.io/composite: example + dummy: foo + testing.upbound.io/example-name: test-user-1 + name: test-user-1 + ownerReferences: + - apiVersion: example.crossplane.io/v1beta1 + blockOwnerDeletion: true + controller: true + kind: XR + name: example + uid: "" +spec: + forProvider: {} +``` diff --git a/examples/default/debug_print/composition.yaml b/examples/default/debug_print/composition.yaml new file mode 100644 index 0000000..f2910e8 --- /dev/null +++ b/examples/default/debug_print/composition.yaml @@ -0,0 +1,69 @@ +apiVersion: apiextensions.crossplane.io/v1 +kind: Composition +metadata: + name: function-template-go +spec: + compositeTypeRef: + apiVersion: example.crossplane.io/v1 + kind: XR + mode: Pipeline + pipeline: + - step: normal + functionRef: + name: kcl-function + input: + apiVersion: krm.kcl.dev/v1alpha1 + kind: KCLInput + metadata: + name: basic + spec: + source: | + import base64 + + oxr = option("params").oxr + count = oxr.spec.count or 1 + print("The value of `count` field in the XR is", count) + ocds = option("params").ocds + dxr = { + **oxr + status.dummy = "cool-status" + } + details = { + apiVersion: "meta.krm.kcl.dev/v1alpha1" + kind: "CompositeConnectionDetails" + if "sample-access-key-0" in ocds: + data: { + username = ocds["sample-access-key-0"].ConnectionDetails.username + password = ocds["sample-access-key-0"].ConnectionDetails.password + url = base64.encode("http://www.example.com") + } + else: + data: {} + } + items = sum([[{ + apiVersion: "iam.aws.upbound.io/v1beta1" + kind: "User" + metadata.name = "test-user-{}".format(i) + metadata.labels: { + "testing.upbound.io/example-name" = "test-user-{}".format(i) + if "test-user-{}".format(i) in ocds: + dummy = ocds["test-user-{}".format(i)].Resource.metadata.labels.dummy + else: + dummy = "foo" + } + spec.forProvider: {} + }, { + apiVersion: "iam.aws.upbound.io/v1beta1" + kind: "AccessKey" + metadata.name = "sample-access-key-{}".format(i) + spec.forProvider.userSelector.matchLabels: { + "testing.upbound.io/example-name" = "test-user-{}".format(i) + } + spec.writeConnectionSecretToRef: { + name: "sample-access-key-secret-{}".format(i) + namespace: "crossplane-system" + } + }] for i in range(count)], []) + [ + details + dxr + ] diff --git a/examples/default/debug_print/functions.yaml b/examples/default/debug_print/functions.yaml new file mode 100644 index 0000000..d5679cb --- /dev/null +++ b/examples/default/debug_print/functions.yaml @@ -0,0 +1,9 @@ +apiVersion: pkg.crossplane.io/v1beta1 +kind: Function +metadata: + name: kcl-function + annotations: + # This tells crossplane render to connect to the function locally. + render.crossplane.io/runtime: Development +spec: + package: xpkg.upbound.io/crossplane-contrib/function-kcl:latest diff --git a/examples/default/debug_print/xr.yaml b/examples/default/debug_print/xr.yaml new file mode 100644 index 0000000..27cae0a --- /dev/null +++ b/examples/default/debug_print/xr.yaml @@ -0,0 +1,6 @@ +apiVersion: example.crossplane.io/v1beta1 +kind: XR +metadata: + name: example +spec: + count: 2 diff --git a/go.mod b/go.mod index 5e46a78..8a66cfa 100644 --- a/go.mod +++ b/go.mod @@ -13,14 +13,14 @@ require ( google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v2 v2.4.0 k8s.io/apimachinery v0.31.1 - kcl-lang.io/krm-kcl v0.10.0 + kcl-lang.io/krm-kcl v0.10.3 sigs.k8s.io/controller-tools v0.16.4 sigs.k8s.io/yaml v1.4.0 ) require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect @@ -61,6 +61,7 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/dominikbraun/graph v0.23.0 // indirect + github.com/ebitengine/purego v0.7.1 // indirect github.com/elliotchance/orderedmap/v2 v2.4.0 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/emicklei/proto v1.13.2 // indirect @@ -69,7 +70,7 @@ require ( github.com/fatih/color v1.17.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/getkin/kin-openapi v0.127.0 // indirect + github.com/getkin/kin-openapi v0.128.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect @@ -115,7 +116,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/julienschmidt/httprouter v1.3.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -144,7 +144,6 @@ require ( github.com/otiai10/copy v1.14.0 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/powerman/rpc-codec v1.2.2 // indirect github.com/prometheus/client_golang v1.20.0 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.55.0 // indirect @@ -192,7 +191,7 @@ require ( google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect + google.golang.org/grpc v1.67.1 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -204,11 +203,11 @@ require ( k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 // indirect - kcl-lang.io/cli v0.10.0 // indirect - kcl-lang.io/kcl-go v0.10.1 // indirect + kcl-lang.io/cli v0.10.4-0.20241016021654-a8eb2b56bdd8 // indirect + kcl-lang.io/kcl-go v0.10.3 // indirect kcl-lang.io/kcl-openapi v0.9.0 // indirect kcl-lang.io/kpm v0.10.0 // indirect - kcl-lang.io/lib v0.10.0 // indirect + kcl-lang.io/lib v0.10.3 // indirect oras.land/oras-go v1.2.6 // indirect oras.land/oras-go/v2 v2.5.0 // indirect sigs.k8s.io/controller-runtime v0.19.0 // indirect diff --git a/go.sum b/go.sum index e7038da..00f35fc 100644 --- a/go.sum +++ b/go.sum @@ -68,8 +68,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -343,6 +343,8 @@ github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo= github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc= +github.com/ebitengine/purego v0.7.1 h1:6/55d26lG3o9VCZX8lping+bZcmShseiqlh2bnUDiPA= +github.com/ebitengine/purego v0.7.1/go.mod h1:ah1In8AOtksoNK6yk5z1HTJeUkC1Ez4Wk2idgGslMwQ= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/elliotchance/orderedmap/v2 v2.4.0 h1:6tUmMwD9F998FNpwFxA5E6NQvSpk2PVw7RKsVq3+2Cw= @@ -380,8 +382,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4= github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4= -github.com/getkin/kin-openapi v0.127.0 h1:Mghqi3Dhryf3F8vR370nN67pAERW+3a95vomb3MAREY= -github.com/getkin/kin-openapi v0.127.0/go.mod h1:OZrfXzUfGrNbsKj+xmFBx6E5c6yH3At/tAKSc2UszXM= +github.com/getkin/kin-openapi v0.128.0 h1:jqq3D9vC9pPq1dGcOCv7yOp1DaEe7c/T1vzcLbITSp4= +github.com/getkin/kin-openapi v0.128.0/go.mod h1:OZrfXzUfGrNbsKj+xmFBx6E5c6yH3At/tAKSc2UszXM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= @@ -636,8 +638,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -742,8 +742,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/powerman/rpc-codec v1.2.2 h1:BK0JScZivljhwW/vLLhZLtUgqSxc/CD3sHEs8LiwwKw= -github.com/powerman/rpc-codec v1.2.2/go.mod h1:3Qr/y/+u3CwcSww9tfJMRn/95lB2qUdUeIQe7BYlLDo= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= @@ -1434,8 +1432,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1507,18 +1505,18 @@ k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7F k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3 h1:b2FmK8YH+QEwq/Sy2uAEhmqL5nPfGYbJOcaqjeYYZoA= k8s.io/utils v0.0.0-20240902221715-702e33fdd3c3/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -kcl-lang.io/cli v0.10.0 h1:pnbE7iev3S2WUC1XGkevwL55OzxULB3DY9/UUvSiPb0= -kcl-lang.io/cli v0.10.0/go.mod h1:lzeTOnp3KIOFU8AJAMCF2lOvBYuQutq+e/Nq2tkvGGo= -kcl-lang.io/kcl-go v0.10.1 h1:2YXQP5QcwNGVLnxdcTNLRoJkYn357gCgqbgU+8hVHxU= -kcl-lang.io/kcl-go v0.10.1/go.mod h1:AQIQplXxCpodSw1Kt+qiFvIB7tzBQ18djT2GytS33nM= +kcl-lang.io/cli v0.10.4-0.20241016021654-a8eb2b56bdd8 h1:GGbmIDVpN30/zEocYwMGVYbN7h80GPSz0ootfXV+xjk= +kcl-lang.io/cli v0.10.4-0.20241016021654-a8eb2b56bdd8/go.mod h1:rhJTKGuav/B8SJO8VLM07TRWzBVdEo/tAfnCKjL71fo= +kcl-lang.io/kcl-go v0.10.3 h1:S2t+RdIl1d9bhIqcw7rd0Zk/Th2u7kSaAgASbbOuw+w= +kcl-lang.io/kcl-go v0.10.3/go.mod h1:kcXB9Ws4MTMj6zp5YXGxkx+Z4HieIrtlYDnFDhfs2mg= kcl-lang.io/kcl-openapi v0.9.0 h1:HUnc5pUGde83PI5CAe1ZvZhdbcxD9X2ABUp1tV+oYqw= kcl-lang.io/kcl-openapi v0.9.0/go.mod h1:kGCf0AZygrZyB+xpmMtiC3FYoiV/1rCLXuAq2QtuLf8= kcl-lang.io/kpm v0.10.0 h1:VnsJ5IS8YSvgXYnItLdaJp/1tTrSSmThzmNCWmhm5Bg= kcl-lang.io/kpm v0.10.0/go.mod h1:MhQh9kewILcUlhuhVBksxWVZfgdwkpkX6xFj1pxF0QM= -kcl-lang.io/krm-kcl v0.10.0 h1:Jo60Zw+jUgIzxKwf0ppdc831nZMbT5QD20TLEIhkcrA= -kcl-lang.io/krm-kcl v0.10.0/go.mod h1:EgYK02//57juS/0317pOoYtkxbI8fzKIOCFtXkqGi8o= -kcl-lang.io/lib v0.10.0 h1:VLwZTMfRZyaGfIJc8qxLn7bKr24PSgZLc3SxMRxUaN4= -kcl-lang.io/lib v0.10.0/go.mod h1:tu+tzwGgHLzYZSIxUG/ntipStrxZd6OvutWYPTxS7cs= +kcl-lang.io/krm-kcl v0.10.3 h1:FXwL4HkaOZXsCTn0JsUphjLM3/TPuDfONK4qM+6nLnE= +kcl-lang.io/krm-kcl v0.10.3/go.mod h1:wHrJq0gaTLlPL2n8l3cXwUdNNuU1SMF7kyut/y7WSko= +kcl-lang.io/lib v0.10.3 h1:2rbwIpfeq/udqon9roRgKax8LCiQR+/9a6Z2CEU314Q= +kcl-lang.io/lib v0.10.3/go.mod h1:gLxxHHwHTSvN0LH2r36OhsXq28VniI440enqvI75l7M= oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= oras.land/oras-go/v2 v2.5.0 h1:o8Me9kLY74Vp5uw07QXPiitjsw7qNXi8Twd+19Zf02c=