Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package timoni for openSUSE:Factory checked 
in at 2023-09-06 18:58:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/timoni (Old)
 and      /work/SRC/openSUSE:Factory/.timoni.new.1766 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "timoni"

Wed Sep  6 18:58:01 2023 rev:4 rq:1109093 version:0.12.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/timoni/timoni.changes    2023-08-01 
15:38:28.129797627 +0200
+++ /work/SRC/openSUSE:Factory/.timoni.new.1766/timoni.changes  2023-09-06 
19:01:45.815195159 +0200
@@ -1,0 +2,36 @@
+Tue Sep 05 15:00:22 UTC 2023 - ka...@b1-systems.de
+
+- Update to version 0.12.1:
+  * Fix panic when waiting for global resources
+
+-------------------------------------------------------------------
+Tue Sep 05 14:57:38 UTC 2023 - ka...@b1-systems.de
+
+- Update to version 0.12.0:
+  * Update example modules
+    - podinfo v6.4.1
+    - redis v7.2.0
+    - minimal v0.1.0
+  * Mark image fields as required Use CUE 0.6 required fields
+    feature for better error messages when required fields are
+    missing from values.
+  * Build with Go 1.21
+  * Bump the ci group with 2 updates
+  * Run server-side apply operations in parallel Speed up the
+    Kubernetes resources reconciliation by running the server-side
+    apply operations in parallel.
+  * Set standard Kubernetes labels: app name and version
+  * Use metadata abstraction in the module template
+  * Introduce Kubernetes metadata CUE definition
+  * Inject version info Add optional tags to inject the module
+    version and Kubernetes version at runtime.
+  * Update `cuelang.org/go` to v0.6.0
+  * Bump the ci group with 3 updates
+  * Document how to change the apply behaviour
+  * Add support for one-off resources To apply resources only if
+    they don't exist on the cluster, module authors can annotate
+    them with `action.timoni.sh/one-off: "enabled"`.
+  * Update dependencies
+  * Bump the ci group with 2 updates
+
+-------------------------------------------------------------------

Old:
----
  timoni-0.11.1.obscpio

New:
----
  timoni-0.12.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ timoni.spec ++++++
--- /var/tmp/diff_new_pack.XJ8vUP/_old  2023-09-06 19:01:48.023273873 +0200
+++ /var/tmp/diff_new_pack.XJ8vUP/_new  2023-09-06 19:01:48.027274015 +0200
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           timoni
-Version:        0.11.1
+Version:        0.12.1
 Release:        0
 Summary:        Package manager for Kubernetes, powered by CUE and inspired by 
Helm
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.XJ8vUP/_old  2023-09-06 19:01:48.055275013 +0200
+++ /var/tmp/diff_new_pack.XJ8vUP/_new  2023-09-06 19:01:48.059275156 +0200
@@ -1,21 +1,21 @@
 <services>
-  <service name="obs_scm" mode="disabled">
+  <service name="obs_scm" mode="manual">
     <param name="url">https://github.com/stefanprodan/timoni</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.11.1</param>
+    <param name="revision">v0.12.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>
   </service>
-  <service name="set_version" mode="disabled">
+  <service name="set_version" mode="manual">
   </service>
   <service name="tar" mode="buildtime"/>
   <service name="recompress" mode="buildtime">
     <param name="file">*.tar</param>
     <param name="compression">gz</param>
   </service>
-  <service name="go_modules" mode="disabled">
+  <service name="go_modules" mode="manual">
   </service>
 </services>
 

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.XJ8vUP/_old  2023-09-06 19:01:48.075275726 +0200
+++ /var/tmp/diff_new_pack.XJ8vUP/_new  2023-09-06 19:01:48.079275869 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/stefanprodan/timoni</param>
-              <param 
name="changesrevision">3e99a6045487156a2e235d525aa446f2b5b09789</param></service></servicedata>
+              <param 
name="changesrevision">51ff2903853bf29fbbbf487fe5a44e61d692034f</param></service></servicedata>
 (No newline at EOF)
 

++++++ timoni-0.11.1.obscpio -> timoni-0.12.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/build.yaml 
new/timoni-0.12.1/.github/workflows/build.yaml
--- old/timoni-0.11.1/.github/workflows/build.yaml      2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/.github/workflows/build.yaml      2023-09-03 
17:42:09.000000000 +0200
@@ -14,18 +14,18 @@
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
-        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
v3.5.3
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 
v3.6.0
       - name: Setup Go
-        uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # 
v4.0.1
+        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 
v4.1.0
         with:
-          go-version: 1.20.x
+          go-version: 1.21.x
           cache-dependency-path: |
             **/go.sum
             **/go.mod
       - name: Setup CUE
-        uses: cue-lang/setup-cue@0be332bb74c8a2f07821389447ba3163e2da3bfb # 
main
+        uses: cue-lang/setup-cue@1713281ae501e533ff06108005dffeab9e2e5203 # 
main
         with:
-          version: v0.5.0
+          version: v0.6.0
       - name: Run tests
         run: make test
       - name: Run linter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/docs.yaml 
new/timoni-0.12.1/.github/workflows/docs.yaml
--- old/timoni-0.11.1/.github/workflows/docs.yaml       2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/.github/workflows/docs.yaml       2023-09-03 
17:42:09.000000000 +0200
@@ -15,11 +15,11 @@
       contents: write
     steps:
       - name: Checkout
-        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
v3.5.3
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 
v3.6.0
       - name: Setup Go
-        uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # 
v4.0.1
+        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 
v4.1.0
         with:
-          go-version: 1.20.x
+          go-version: 1.21.x
           cache-dependency-path: |
             **/go.sum
             **/go.mod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/e2e.yaml 
new/timoni-0.12.1/.github/workflows/e2e.yaml
--- old/timoni-0.11.1/.github/workflows/e2e.yaml        2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/.github/workflows/e2e.yaml        2023-09-03 
17:42:09.000000000 +0200
@@ -19,19 +19,19 @@
           - 5000:5000
     steps:
       - name: Checkout
-        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
v3.5.3
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 
v3.6.0
       - name: Setup Go
-        uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # 
v4.0.1
+        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 
v4.1.0
         with:
-          go-version: 1.20.x
+          go-version: 1.21.x
           cache-dependency-path: |
             **/go.sum
             **/go.mod
       - name: Setup Kubernetes
         uses: helm/kind-action@dda0770415bac9fc20092cacbc54aa298604d140 # 
v1.8.0
         with:
-          version: v0.18.0
-          node_image: kindest/node:v1.27.2
+          version: v0.20.0
+          node_image: kindest/node:v1.28.0
           cluster_name: kind
       - name: Install
         run: make install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/release.yaml 
new/timoni-0.12.1/.github/workflows/release.yaml
--- old/timoni-0.11.1/.github/workflows/release.yaml    2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/.github/workflows/release.yaml    2023-09-03 
17:42:09.000000000 +0200
@@ -19,13 +19,13 @@
       packages: write
     steps:
       - name: Checkout
-        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
v3.5.3
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 
v3.6.0
       - name: Unshallow
         run: git fetch --prune --unshallow
       - name: Setup Go
-        uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # 
v4.0.1
+        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 
v4.1.0
         with:
-          go-version: 1.20.x
+          go-version: 1.21.x
           cache-dependency-path: |
             **/go.sum
             **/go.mod
@@ -33,7 +33,7 @@
         uses: 
anchore/sbom-action/download-syft@78fc58e266e87a38d4194b2137a3d4e9bcaf7ca1 # 
v0.14.3
       - name: Run GoReleaser
         id: run-goreleaser
-        uses: 
goreleaser/goreleaser-action@336e29918d653399e599bfca99fadc1d7ffbc9f7 # v4.3.0
+        uses: 
goreleaser/goreleaser-action@3fa32b8bb5620a2c1afe798654bbad59f9da4906 # v4.4.0
         with:
           version: latest
           args: release --skip-validate
@@ -61,7 +61,7 @@
       actions: read # To read the workflow path.
       id-token: write # To sign the provenance.
       contents: write # To add assets to a release.
-    uses: 
slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.7.0
+    uses: 
slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v1.9.0
     with:
       provenance-name: "timoni_${{ needs.goreleaser.outputs.version 
}}_provenance.intoto.jsonl"
       base64-subjects: "${{ needs.goreleaser.outputs.hashes }}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/.github/workflows/scan.yml 
new/timoni-0.12.1/.github/workflows/scan.yml
--- old/timoni-0.11.1/.github/workflows/scan.yml        2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/.github/workflows/scan.yml        2023-09-03 
17:42:09.000000000 +0200
@@ -19,11 +19,11 @@
     if: github.actor != 'dependabot[bot]'
     steps:
       - name: Checkout
-        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
v3.5.3
+        uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 
v3.6.0
       - name: Setup Go
-        uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # 
v4.0.1
+        uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 
v4.1.0
         with:
-          go-version: 1.20.x
+          go-version: 1.21.x
           cache-dependency-path: |
             **/go.sum
             **/go.mod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/Makefile new/timoni-0.12.1/Makefile
--- old/timoni-0.11.1/Makefile  2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/Makefile  2023-09-03 17:42:09.000000000 +0200
@@ -42,7 +42,7 @@
        ./bin/timoni mod lint ./internal/engine/testdata/module
        cue fmt ./internal/engine/testdata/module-values
 
-MINIMAL_VER ?= "0.0.1"
+MINIMAL_VER ?= "0.1.0"
 push-minimal: build
        ./bin/timoni mod push ./examples/minimal 
oci://ghcr.io/stefanprodan/timoni/minimal -v $(MINIMAL_VER) --latest \
                --source 
https://github.com/stefanprodan/timoni/tree/main/examples/minimal  \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/api/v1alpha1/actions.go 
new/timoni-0.12.1/api/v1alpha1/actions.go
--- old/timoni-0.11.1/api/v1alpha1/actions.go   2023-07-31 21:47:47.000000000 
+0200
+++ new/timoni-0.12.1/api/v1alpha1/actions.go   2023-09-03 17:42:09.000000000 
+0200
@@ -29,4 +29,8 @@
 
        // ForceAction is the annotation that defines if a Kubernetes resource 
should be recreated.
        ForceAction = fmt.Sprintf("action.%s/force", GroupVersion.Group)
+
+       // IfNotPresentAction is the annotation that defines if a Kubernetes 
resource
+       // should be applied only if it doesn't exist on the cluster.
+       IfNotPresentAction = fmt.Sprintf("action.%s/one-off", 
GroupVersion.Group)
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/apply.go 
new/timoni-0.12.1/cmd/timoni/apply.go
--- old/timoni-0.11.1/cmd/timoni/apply.go       2023-07-31 21:47:47.000000000 
+0200
+++ new/timoni-0.12.1/cmd/timoni/apply.go       2023-09-03 17:42:09.000000000 
+0200
@@ -206,6 +206,13 @@
                }
        }
 
+       kubeVersion, err := runtime.ServerVersion(kubeconfigArgs)
+       if err != nil {
+               return err
+       }
+
+       builder.SetVersionInfo(mod.Version, kubeVersion)
+
        buildResult, err := builder.Build()
        if err != nil {
                return describeErr(fetcher.GetModuleRoot(), "failed to build 
instance", err)
@@ -288,8 +295,10 @@
        }
 
        applyOpts := runtime.ApplyOptions(applyArgs.force, rootArgs.timeout)
+       applyOpts.WaitInterval = 5 * time.Second
+
        waitOptions := ssa.WaitOptions{
-               Interval: 5 * time.Second,
+               Interval: applyOpts.WaitInterval,
                Timeout:  rootArgs.timeout,
                FailFast: true,
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/apply_test.go 
new/timoni-0.12.1/cmd/timoni/apply_test.go
--- old/timoni-0.11.1/cmd/timoni/apply_test.go  2023-07-31 21:47:47.000000000 
+0200
+++ new/timoni-0.12.1/cmd/timoni/apply_test.go  2023-09-03 17:42:09.000000000 
+0200
@@ -25,11 +25,12 @@
        "testing"
 
        . "github.com/onsi/gomega"
-       apiv1 "github.com/stefanprodan/timoni/api/v1alpha1"
        corev1 "k8s.io/api/core/v1"
        apierrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "sigs.k8s.io/controller-runtime/pkg/client"
+
+       apiv1 "github.com/stefanprodan/timoni/api/v1alpha1"
 )
 
 func TestApply(t *testing.T) {
@@ -41,7 +42,7 @@
        t.Run("creates instance with default values", func(t *testing.T) {
                g := NewWithT(t)
                output, err := executeCommand(fmt.Sprintf(
-                       "apply -n %s %s %s -p main --wait",
+                       "apply -n %s %s %s -p main --wait --timeout=10s",
                        namespace,
                        name,
                        modPath,
@@ -61,6 +62,8 @@
 
                
g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue(tGroup+"/name", name))
                
g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue(tGroup+"/namespace", 
namespace))
+               
g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue("app.kubernetes.io/version", 
"0.0.0-devel"))
+               
g.Expect(clientCM.GetLabels()).To(HaveKey("app.kubernetes.io/kube"))
        })
 
        t.Run("updates instance with custom values", func(t *testing.T) {
@@ -313,3 +316,41 @@
                g.Expect(err).ToNot(HaveOccurred())
        })
 }
+
+func TestApply_GlobalResources(t *testing.T) {
+       modPath := "testdata/module"
+       name := rnd("my-instance", 5)
+       namespace := rnd("my-namespace", 5)
+       nsObj := &corev1.Namespace{
+               ObjectMeta: metav1.ObjectMeta{
+                       Name: fmt.Sprintf("%s-ns", name),
+               },
+       }
+
+       t.Run("creates instance with global objects", func(t *testing.T) {
+               g := NewWithT(t)
+               output, err := executeCommandWithIn(fmt.Sprintf(
+                       "apply -n %s %s %s -f- -p main --wait --timeout=10s",
+                       namespace,
+                       name,
+                       modPath,
+               ), strings.NewReader("values: ns: enabled: true"))
+               g.Expect(err).ToNot(HaveOccurred())
+               t.Log("\n", output)
+
+               ns := nsObj.DeepCopy()
+               err = envTestClient.Get(context.Background(), 
client.ObjectKeyFromObject(ns), ns)
+               g.Expect(err).ToNot(HaveOccurred())
+       })
+
+       t.Run("uninstalls instance", func(t *testing.T) {
+               g := NewWithT(t)
+               output, err := executeCommand(fmt.Sprintf(
+                       "delete -n %s %s --wait=false",
+                       namespace,
+                       name,
+               ))
+               g.Expect(err).ToNot(HaveOccurred())
+               t.Log("\n", output)
+       })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/bundle_apply.go 
new/timoni-0.12.1/cmd/timoni/bundle_apply.go
--- old/timoni-0.11.1/cmd/timoni/bundle_apply.go        2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/cmd/timoni/bundle_apply.go        2023-09-03 
17:42:09.000000000 +0200
@@ -143,9 +143,14 @@
        ctx, cancel := context.WithTimeout(cmd.Context(), rootArgs.timeout)
        defer cancel()
 
+       kubeVersion, err := runtime.ServerVersion(kubeconfigArgs)
+       if err != nil {
+               return err
+       }
+
        for _, instance := range bundle.Instances {
                log.Info(fmt.Sprintf("applying instance %s", instance.Name))
-               if err := applyBundleInstance(logr.NewContext(ctx, log), 
cuectx, instance); err != nil {
+               if err := applyBundleInstance(logr.NewContext(ctx, log), 
cuectx, instance, kubeVersion); err != nil {
                        return err
                }
        }
@@ -159,7 +164,7 @@
        return nil
 }
 
-func applyBundleInstance(ctx context.Context, cuectx *cue.Context, instance 
engine.BundleInstance) error {
+func applyBundleInstance(ctx context.Context, cuectx *cue.Context, instance 
engine.BundleInstance, kubeVersion string) error {
        moduleVersion := instance.Module.Version
        sourceURL := fmt.Sprintf("%s:%s", instance.Module.Repository, 
instance.Module.Version)
 
@@ -221,6 +226,8 @@
                return err
        }
 
+       builder.SetVersionInfo(mod.Version, kubeVersion)
+
        buildResult, err := builder.Build()
        if err != nil {
                return describeErr(fetcher.GetModuleRoot(), "failed to build 
instance", err)
@@ -302,8 +309,10 @@
        }
 
        applyOpts := runtime.ApplyOptions(bundleApplyArgs.force, 
rootArgs.timeout)
+       applyOpts.WaitInterval = 5 * time.Second
+
        waitOptions := ssa.WaitOptions{
-               Interval: 5 * time.Second,
+               Interval: applyOpts.WaitInterval,
                Timeout:  rootArgs.timeout,
                FailFast: true,
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/bundle_apply_test.go 
new/timoni-0.12.1/cmd/timoni/bundle_apply_test.go
--- old/timoni-0.11.1/cmd/timoni/bundle_apply_test.go   2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/cmd/timoni/bundle_apply_test.go   2023-09-03 
17:42:09.000000000 +0200
@@ -109,6 +109,8 @@
 
                                err = envTestClient.Get(context.Background(), 
client.ObjectKeyFromObject(clientCM), clientCM)
                                g.Expect(err).ToNot(HaveOccurred())
+                               
g.Expect(clientCM.GetLabels()).To(HaveKeyWithValue("app.kubernetes.io/version", 
modVer))
+                               
g.Expect(clientCM.GetLabels()).To(HaveKey("app.kubernetes.io/kube"))
 
                                serverCM := &corev1.ConfigMap{
                                        ObjectMeta: metav1.ObjectMeta{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/main.go 
new/timoni-0.12.1/cmd/timoni/main.go
--- old/timoni-0.11.1/cmd/timoni/main.go        2023-07-31 21:47:47.000000000 
+0200
+++ new/timoni-0.12.1/cmd/timoni/main.go        2023-09-03 17:42:09.000000000 
+0200
@@ -33,7 +33,7 @@
 
 var (
        VERSION     = "0.0.0-dev.0"
-       CUE_VERSION = "0.5.0"
+       CUE_VERSION = "0.6.0"
 )
 
 var rootCmd = &cobra.Command{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/cmd/timoni/testdata/module/templates/config.cue 
new/timoni-0.12.1/cmd/timoni/testdata/module/templates/config.cue
--- old/timoni-0.11.1/cmd/timoni/testdata/module/templates/config.cue   
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/cmd/timoni/testdata/module/templates/config.cue   
2023-09-03 17:42:09.000000000 +0200
@@ -4,13 +4,22 @@
        metadata: {
                name:      *"test" | string
                namespace: *"default" | string
-               labels:    *{"app.kubernetes.io/name": metadata.name} | {[ 
string]: string}
+               labels:    *{
+                               "app.kubernetes.io/name":    metadata.name
+                               "app.kubernetes.io/version": moduleVersion
+                               "app.kubernetes.io/kube":    kubeVersion
+               } | {[ string]: string}
                annotations?: {[ string]: string}
        }
 
+       moduleVersion: string
+       kubeVersion:   string
+
        client: enabled: *true | bool
        server: enabled: *true | bool
        domain: *"example.internal" | string
+
+       ns: enabled: *false | bool
 }
 
 #Instance: {
@@ -24,5 +33,9 @@
                if config.server.enabled {
                        "\(config.metadata.name)-server": #ServerConfig & 
{_config: config}
                }
+
+               if config.ns.enabled {
+                       "\(config.metadata.name)-ns": #Namespace & {_config: 
config}
+               }
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/cmd/timoni/testdata/module/templates/namespace.cue 
new/timoni-0.12.1/cmd/timoni/testdata/module/templates/namespace.cue
--- old/timoni-0.11.1/cmd/timoni/testdata/module/templates/namespace.cue        
1970-01-01 01:00:00.000000000 +0100
+++ new/timoni-0.12.1/cmd/timoni/testdata/module/templates/namespace.cue        
2023-09-03 17:42:09.000000000 +0200
@@ -0,0 +1,14 @@
+package templates
+
+#Namespace: {
+       _config:    #Config
+       apiVersion: "v1"
+       kind:       "Namespace"
+       metadata: {
+               name:      "\(_config.metadata.name)-ns"
+               labels:    _config.metadata.labels
+               if _config.metadata.annotations != _|_ {
+                       annotations: _config.metadata.annotations
+               }
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/cmd/timoni/testdata/module/timoni.cue 
new/timoni-0.12.1/cmd/timoni/testdata/module/timoni.cue
--- old/timoni-0.11.1/cmd/timoni/testdata/module/timoni.cue     2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/cmd/timoni/testdata/module/timoni.cue     2023-09-03 
17:42:09.000000000 +0200
@@ -31,6 +31,10 @@
                        name:      string @tag(name)
                        namespace: string @tag(namespace)
                }
+               config: {
+                       moduleVersion: string @tag(mv, var=moduleVersion)
+                       kubeVersion:   string @tag(kv, var=kubeVersion)
+               }
        }
 
        // Pass Kubernetes resources outputted by the instance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/docs/index.md 
new/timoni-0.12.1/docs/index.md
--- old/timoni-0.11.1/docs/index.md     2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/docs/index.md     2023-09-03 17:42:09.000000000 +0200
@@ -107,17 +107,10 @@
 The apply command validates all resources with a dry-run apply,
 and reconciles only the ones with changes to the cluster state.
 
-To recreate immutable resources such as Kubernetes Jobs,
-these resources can be annotated with `action.timoni.sh/force: "enabled"`.
-
 Timoni's garbage collector keeps track of the applied resources
 and prunes the Kubernetes objects that were previously applied
 but are missing from the current revision.
 
-To prevent Timoni's garbage collector from deleting certain
-resources such as Kubernetes Persistent Volumes,
-these resources can be annotated with `action.timoni.sh/prune: "disabled"`.
-
 After an installation or upgrade, Timoni waits for the
 applied resources to be fully reconciled by checking the ready status
 of deployments, jobs, services, ingresses, and Kubernetes custom resources.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/docs/module.md 
new/timoni-0.12.1/docs/module.md
--- old/timoni-0.11.1/docs/module.md    2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/docs/module.md    2023-09-03 17:42:09.000000000 +0200
@@ -228,6 +228,27 @@
 }
 ```
 
+### Controlling the apply behaviour
+
+Timoni allows module authors to change the default apply behaviour of 
Kubernetes resources
+using the following annotations:
+
+| Annotation                 | Values               |
+|----------------------------|----------------------|
+| `action.timoni.sh/force`   | `enabled`/`disabled` |
+| `action.timoni.sh/one-off` | `enabled`/`disabled` |
+| `action.timoni.sh/prune`   | `enabled`/`disabled` |
+
+To recreate immutable resources such as Kubernetes Jobs,
+these resources can be annotated with `action.timoni.sh/force: "enabled"`.
+
+To apply resources only if they don't exist on the cluster,
+these resources can be annotated with `action.timoni.sh/one-off: "enabled"`.
+
+To prevent Timoni's garbage collector from deleting certain
+resources such as Kubernetes Persistent Volumes,
+these resources can be annotated with `action.timoni.sh/prune: "disabled"`.
+
 ## Kubernetes types
 
 The `cue.mod` directory contains the Kubernetes types and their schema.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue
 
new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue
--- 
old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue
    2023-07-31 21:47:47.000000000 +0200
+++ 
new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue
    2023-09-03 17:42:09.000000000 +0200
@@ -1,11 +1,10 @@
-
 package v1alpha1
 
 // Image defines the schema for an OCI image reference.
 #Image: {
-       repository: string
-       tag:        string
-       digest:     string
+       repository!: string
+       tag!:        string
+       digest!:     string
 
        // Reference is the image address computed from
        // repository, tag and digest.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue
 
new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue
--- 
old/timoni-0.11.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue
 1970-01-01 01:00:00.000000000 +0100
+++ 
new/timoni-0.12.1/examples/minimal/cue.mod/pkg/timoni.sh/core/v1alpha1/metadata.cue
 2023-09-03 17:42:09.000000000 +0200
@@ -0,0 +1,39 @@
+package v1alpha1
+
+import "strings"
+
+// Metadata defines the schema for the Kubernetes object metadata.
+#Metadata: {
+       // Name must be unique within a namespace. Is required when creating 
resources.
+       // Name is primarily intended for creation idempotence and 
configuration definition.
+       // More info: 
https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
+       name!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & 
strings.MaxRunes(63)
+
+       // Namespace defines the space within which each name must be unique.
+       // More info: 
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
+       namespace!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" 
& strings.MaxRunes(63)
+
+       // Version should be in the strict semver format. Is required when 
creating resources.
+       version!: string & strings.MaxRunes(63)
+
+       // Annotations is an unstructured key value map stored with a resource 
that may be
+       // set o store and retrieve arbitrary metadata.
+       // More info: 
https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
+       annotations?: {[string]: string}
+
+       // Map of string keys and values that can be used to organize and 
categorize
+       // (scope and select) objects.
+       // More info: 
https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
+       labels: {[string]: string & 
=~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)}
+
+       // Standard Kubernetes labels: app name and version.
+       labels: {
+               "app.kubernetes.io/name":    name
+               "app.kubernetes.io/version": version
+       }
+
+       // Labels used to select pods for Kubernetes Deployment, Service, Job, 
etc.
+       labelSelector: *{
+                       "app.kubernetes.io/name": name
+       } | {[ string]: string}
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/debug_tool.cue 
new/timoni-0.12.1/examples/minimal/debug_tool.cue
--- old/timoni-0.11.1/examples/minimal/debug_tool.cue   1970-01-01 
01:00:00.000000000 +0100
+++ new/timoni-0.12.1/examples/minimal/debug_tool.cue   2023-09-03 
17:42:09.000000000 +0200
@@ -0,0 +1,33 @@
+package main
+
+import (
+       "tool/cli"
+       "encoding/yaml"
+       "text/tabwriter"
+)
+
+// The build command generates the Kubernetes manifests and prints the 
multi-docs YAML to stdout.
+// Example 'cue cmd -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 
build'.
+command: build: {
+       task: print: cli.Print & {
+               text: yaml.MarshalStream(timoni.apply.all)
+       }
+}
+
+// The ls command prints a table with the Kubernetes resources kind, 
namespace, name and version.
+// Example 'cue cmd -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 
ls'.
+command: ls: {
+       task: print: cli.Print & {
+               text: tabwriter.Write([
+                       "RESOURCE \tAPI VERSION",
+                       for r in timoni.apply.all {
+                               if r.metadata.namespace == _|_ {
+                                       "\(r.kind)/\(r.metadata.name) 
\t\(r.apiVersion)"
+                               }
+                               if r.metadata.namespace != _|_ {
+                                       
"\(r.kind)/\(r.metadata.namespace)/\(r.metadata.name)  \t\(r.apiVersion)"
+                               }
+                       },
+               ])
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/config.cue 
new/timoni-0.12.1/examples/minimal/templates/config.cue
--- old/timoni-0.11.1/examples/minimal/templates/config.cue     2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/templates/config.cue     2023-09-03 
17:42:09.000000000 +0200
@@ -1,29 +1,25 @@
 package templates
 
 import (
-       "strings"
-
-       metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        corev1 "k8s.io/api/core/v1"
        timoniv1 "timoni.sh/core/v1alpha1"
 )
 
 // Config defines the schema and defaults for the Instance values.
 #Config: {
+       // Runtime version info
+       moduleVersion: string
+       kubeVersion:   string
+
        // Metadata (common to all resources)
-       metadata: metav1.#ObjectMeta
-       metadata: name:      string & 
=~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)
-       metadata: namespace: string & strings.MaxRunes(63)
-       metadata: labels:    *selectorLabels | {[ string]: string}
-       metadata: labels: "app.kubernetes.io/version": image.tag
-       metadata: annotations?: {[ string]:            string}
+       metadata: timoniv1.#Metadata
+       metadata: version: moduleVersion
 
        // App settings
        message: string
 
        // Deployment
-       replicas:       *1 | int & >0
-       selectorLabels: *{"app.kubernetes.io/name": metadata.name} | {[ 
string]: string}
+       replicas: *1 | int & >0
 
        // Pod
        podAnnotations?: {[ string]: string}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/examples/minimal/templates/configmap.cue 
new/timoni-0.12.1/examples/minimal/templates/configmap.cue
--- old/timoni-0.11.1/examples/minimal/templates/configmap.cue  2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/templates/configmap.cue  2023-09-03 
17:42:09.000000000 +0200
@@ -13,10 +13,12 @@
        apiVersion: "v1"
        kind:       "ConfigMap"
        metadata: {
-               name:         "\(_config.metadata.name)-\(_checksum)"
-               namespace:    _config.metadata.namespace
-               labels:       _config.metadata.labels
-               annotations?: _config.metadata.annotations
+               name:      "\(_config.metadata.name)-\(_checksum)"
+               namespace: _config.metadata.namespace
+               labels:    _config.metadata.labels
+               if _config.metadata.annotations != _|_ {
+                       annotations: _config.metadata.annotations
+               }
        }
        immutable: true
        let _checksum = strings.Split(uuid.SHA1(uuid.ns.DNS, 
yaml.Marshal(data)), "-")[0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/examples/minimal/templates/deployment.cue 
new/timoni-0.12.1/examples/minimal/templates/deployment.cue
--- old/timoni-0.11.1/examples/minimal/templates/deployment.cue 2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/templates/deployment.cue 2023-09-03 
17:42:09.000000000 +0200
@@ -10,13 +10,20 @@
        _cmName:    string
        apiVersion: "apps/v1"
        kind:       "Deployment"
-       metadata:   _config.metadata
-       spec:       appsv1.#DeploymentSpec & {
+       metadata: {
+               name:      _config.metadata.name
+               namespace: _config.metadata.namespace
+               labels:    _config.metadata.labels
+               if _config.metadata.annotations != _|_ {
+                       annotations: _config.metadata.annotations
+               }
+       }
+       spec: appsv1.#DeploymentSpec & {
                replicas: _config.replicas
-               selector: matchLabels: _config.selectorLabels
+               selector: matchLabels: _config.metadata.labelSelector
                template: {
                        metadata: {
-                               labels: _config.selectorLabels
+                               labels: _config.metadata.labelSelector
                                if _config.podAnnotations != _|_ {
                                        annotations: _config.podAnnotations
                                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/templates/service.cue 
new/timoni-0.12.1/examples/minimal/templates/service.cue
--- old/timoni-0.11.1/examples/minimal/templates/service.cue    2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/templates/service.cue    2023-09-03 
17:42:09.000000000 +0200
@@ -8,10 +8,17 @@
        _config:    #Config
        apiVersion: "v1"
        kind:       "Service"
-       metadata:   _config.metadata
-       spec:       corev1.#ServiceSpec & {
+       metadata: {
+               name:      _config.metadata.name
+               namespace: _config.metadata.namespace
+               labels:    _config.metadata.labels
+               if _config.metadata.annotations != _|_ {
+                       annotations: _config.metadata.annotations
+               }
+       }
+       spec: corev1.#ServiceSpec & {
                type:     corev1.#ServiceTypeClusterIP
-               selector: _config.selectorLabels
+               selector: _config.metadata.labelSelector
                ports: [
                        {
                                name:       "http"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/examples/minimal/templates/serviceaccount.cue 
new/timoni-0.12.1/examples/minimal/templates/serviceaccount.cue
--- old/timoni-0.11.1/examples/minimal/templates/serviceaccount.cue     
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/templates/serviceaccount.cue     
2023-09-03 17:42:09.000000000 +0200
@@ -8,5 +8,12 @@
        _config:    #Config
        apiVersion: "v1"
        kind:       "ServiceAccount"
-       metadata:   _config.metadata
+       metadata: {
+               name:      _config.metadata.name
+               namespace: _config.metadata.namespace
+               labels:    _config.metadata.labels
+               if _config.metadata.annotations != _|_ {
+                       annotations: _config.metadata.annotations
+               }
+       }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/minimal/timoni.cue 
new/timoni-0.12.1/examples/minimal/timoni.cue
--- old/timoni-0.11.1/examples/minimal/timoni.cue       2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/minimal/timoni.cue       2023-09-03 
17:42:09.000000000 +0200
@@ -31,6 +31,11 @@
                        name:      string @tag(name)
                        namespace: string @tag(namespace)
                }
+               // Optional runtime version info.
+               config: {
+                       moduleVersion: string @tag(mv, var=moduleVersion)
+                       kubeVersion:   string @tag(kv, var=kubeVersion)
+               }
        }
 
        // Pass Kubernetes resources outputted by the instance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/podinfo/templates/config.cue 
new/timoni-0.12.1/examples/podinfo/templates/config.cue
--- old/timoni-0.11.1/examples/podinfo/templates/config.cue     2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/podinfo/templates/config.cue     2023-09-03 
17:42:09.000000000 +0200
@@ -35,7 +35,7 @@
        // Container
        image: {
                repository: *"ghcr.io/stefanprodan/podinfo" | string
-               tag:        *"6.3.6" | string
+               tag:        *"6.4.1" | string
                digest?:    string
                pullPolicy: *"IfNotPresent" | string
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/examples/redis/templates/config.cue 
new/timoni-0.12.1/examples/redis/templates/config.cue
--- old/timoni-0.11.1/examples/redis/templates/config.cue       2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/examples/redis/templates/config.cue       2023-09-03 
17:42:09.000000000 +0200
@@ -32,8 +32,8 @@
        // Container image
        image: {
                repository: *"cgr.dev/chainguard/redis" | string
-               tag:        *"7.0.12" | string
-               digest:     
*"sha256:9cdc90a57fa0cc23dce9a934313cc5412a3b8415a60e79797ee9cb4ca04a3968" | 
string
+               tag:        *"7.2.0" | string
+               digest:     
*"sha256:0c19ce07fa6952f872b15d5da4cb0681402775ad8f159cfcfb0c10b6e8c8bd37" | 
string
                pullPolicy: *"IfNotPresent" | string
        }
        imagePullSecrets?: [...corev1.LocalObjectReference]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/go.mod new/timoni-0.12.1/go.mod
--- old/timoni-0.11.1/go.mod    2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/go.mod    2023-09-03 17:42:09.000000000 +0200
@@ -3,18 +3,18 @@
 go 1.20
 
 require (
-       cuelang.org/go v0.5.0
+       cuelang.org/go v0.6.0
        github.com/Masterminds/semver/v3 v3.2.1
        github.com/briandowns/spinner v1.23.0
-       github.com/distribution/distribution/v3 
v3.0.0-20230722181636-7b502560cad4
+       github.com/distribution/distribution/v3 
v3.0.0-20230824182353-293b588075cb
        github.com/fatih/color v1.15.0
-       github.com/fluxcd/pkg/oci v0.30.0
-       github.com/fluxcd/pkg/sourceignore v0.3.4
-       github.com/fluxcd/pkg/ssa v0.29.0
+       github.com/fluxcd/pkg/oci v0.31.0
+       github.com/fluxcd/pkg/sourceignore v0.3.5
+       github.com/fluxcd/pkg/ssa v0.32.0
        github.com/go-logr/logr v1.2.4
        github.com/go-logr/zerologr v1.2.3
        github.com/gonvenience/ytbx v1.4.4
-       github.com/google/go-containerregistry v0.15.2
+       github.com/google/go-containerregistry v0.16.1
        github.com/homeport/dyff v1.5.8
        github.com/mattn/go-shellwords v1.0.12
        github.com/olekukonko/tablewriter v0.0.5
@@ -30,48 +30,44 @@
        k8s.io/cli-runtime v0.27.4
        k8s.io/client-go v0.27.4
        sigs.k8s.io/cli-utils v0.35.0
-       sigs.k8s.io/controller-runtime v0.15.0
+       sigs.k8s.io/controller-runtime v0.15.1
        sigs.k8s.io/yaml v1.3.0
 )
 
 require (
-       github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 // indirect
-       github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect
+       github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 // indirect
+       github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 // indirect
        github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect
        github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // 
indirect
-       github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // 
indirect
+       github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // 
indirect
        github.com/BurntSushi/toml v1.3.2 // indirect
        github.com/MakeNowJust/heredoc v1.0.0 // indirect
-       github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d // 
indirect
        github.com/acomagu/bufpipe v1.0.4 // indirect
-       github.com/aws/aws-sdk-go-v2 v1.18.1 // indirect
-       github.com/aws/aws-sdk-go-v2/config v1.18.27 // indirect
-       github.com/aws/aws-sdk-go-v2/credentials v1.13.26 // indirect
-       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 // indirect
-       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 // indirect
-       github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13 // indirect
-       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 // 
indirect
-       github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 // indirect
-       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 // indirect
-       github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 // indirect
-       github.com/aws/smithy-go v1.13.5 // indirect
+       github.com/aws/aws-sdk-go-v2 v1.21.0 // indirect
+       github.com/aws/aws-sdk-go-v2/config v1.18.36 // indirect
+       github.com/aws/aws-sdk-go-v2/credentials v1.13.35 // indirect
+       github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 // indirect
+       github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42 // indirect
+       github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5 // indirect
+       github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // 
indirect
+       github.com/aws/aws-sdk-go-v2/service/sso v1.13.5 // indirect
+       github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 // indirect
+       github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect
+       github.com/aws/smithy-go v1.14.2 // indirect
        github.com/beorn7/perks v1.0.1 // indirect
        github.com/bshuster-repo/logrus-logstash-hook v1.0.0 // indirect
-       github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd // 
indirect
-       github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b // indirect
-       github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 // 
indirect
        github.com/cespare/xxhash/v2 v2.2.0 // indirect
        github.com/chai2010/gettext-go v1.0.2 // indirect
-       github.com/cockroachdb/apd/v2 v2.0.2 // indirect
+       github.com/cockroachdb/apd/v3 v3.2.0 // indirect
        github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect
        github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
        github.com/cyphar/filepath-securejoin v0.2.3 // indirect
        github.com/davecgh/go-spew v1.1.1 // indirect
-       github.com/docker/cli v23.0.5+incompatible // indirect
+       github.com/docker/cli v24.0.0+incompatible // indirect
        github.com/docker/distribution v2.8.2+incompatible // indirect
-       github.com/docker/docker v23.0.5+incompatible // indirect
+       github.com/docker/docker v24.0.0+incompatible // indirect
        github.com/docker/docker-credential-helpers v0.7.0 // indirect
        github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // 
indirect
        github.com/docker/go-metrics v0.0.1 // indirect
@@ -88,13 +84,12 @@
        github.com/go-errors/errors v1.4.2 // indirect
        github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
        github.com/go-git/go-billy/v5 v5.4.1 // indirect
-       github.com/go-git/go-git/v5 v5.7.0 // indirect
+       github.com/go-git/go-git/v5 v5.8.1 // indirect
        github.com/go-openapi/jsonpointer v0.19.6 // indirect
        github.com/go-openapi/jsonreference v0.20.1 // indirect
        github.com/go-openapi/swag v0.22.3 // indirect
        github.com/gogo/protobuf v1.3.2 // indirect
-       github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
-       github.com/golang/glog v1.0.0 // indirect
+       github.com/golang-jwt/jwt/v5 v5.0.0 // indirect
        github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // 
indirect
        github.com/golang/protobuf v1.5.3 // indirect
        github.com/gomodule/redigo v1.8.2 // indirect
@@ -112,7 +107,8 @@
        github.com/gorilla/handlers v1.5.1 // indirect
        github.com/gorilla/mux v1.8.0 // indirect
        github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // 
indirect
-       github.com/hashicorp/golang-lru v0.5.4 // indirect
+       github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect
+       github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect
        github.com/imdario/mergo v0.3.15 // indirect
        github.com/inconshreveable/mousetrap v1.1.0 // indirect
        github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // 
indirect
@@ -149,7 +145,7 @@
        github.com/prometheus/client_model v0.4.0 // indirect
        github.com/prometheus/common v0.42.0 // indirect
        github.com/prometheus/procfs v0.9.0 // indirect
-       github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b 
// indirect
+       github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 
// indirect
        github.com/rivo/uniseg v0.2.0 // indirect
        github.com/russross/blackfriday/v2 v2.1.0 // indirect
        github.com/sergi/go-diff v1.3.1 // indirect
@@ -158,19 +154,17 @@
        github.com/vbatts/tar-split v0.11.3 // indirect
        github.com/virtuald/go-ordered-json v0.0.0-20170621173500-b18e6e673d74 
// indirect
        github.com/xlab/treeprint v1.1.0 // indirect
-       github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 // 
indirect
-       github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 // 
indirect
-       github.com/yvasiyarov/newrelic_platform_go 
v0.0.0-20140908184405-b21fdbd4370f // indirect
        go.starlark.net v0.0.0-20221028183056-acb66ad56dd2 // indirect
        go.uber.org/atomic v1.10.0 // indirect
        go.uber.org/multierr v1.8.0 // indirect
-       golang.org/x/crypto v0.11.0 // indirect
-       golang.org/x/net v0.12.0 // indirect
-       golang.org/x/oauth2 v0.7.0 // indirect
+       golang.org/x/crypto v0.12.0 // indirect
+       golang.org/x/mod v0.10.0 // indirect
+       golang.org/x/net v0.14.0 // indirect
+       golang.org/x/oauth2 v0.8.0 // indirect
        golang.org/x/sync v0.3.0 // indirect
-       golang.org/x/sys v0.10.0 // indirect
-       golang.org/x/term v0.10.0 // indirect
-       golang.org/x/text v0.11.0 // indirect
+       golang.org/x/sys v0.11.0 // indirect
+       golang.org/x/term v0.11.0 // indirect
+       golang.org/x/text v0.12.0 // indirect
        golang.org/x/time v0.3.0 // indirect
        gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect
        google.golang.org/appengine v1.6.7 // indirect
@@ -187,5 +181,5 @@
        sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
        sigs.k8s.io/kustomize/api v0.13.2 // indirect
        sigs.k8s.io/kustomize/kyaml v0.14.1 // indirect
-       sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
+       sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/go.sum new/timoni-0.12.1/go.sum
--- old/timoni-0.11.1/go.sum    2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/go.sum    2023-09-03 17:42:09.000000000 +0200
@@ -1,17 +1,17 @@
 cloud.google.com/go v0.26.0/go.mod 
h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod 
h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU=
-cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 
h1:SEy2xmstIphdPwNBUi7uhvjyjhVKISfwjfOJmuy7kg4=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod 
h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 
h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg=
-github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod 
h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U=
+cuelang.org/go v0.6.0 h1:dJhgKCog+FEZt7OwAYV1R+o/RZPmE8aqFoptmxSWyr8=
+cuelang.org/go v0.6.0/go.mod h1:9CxOX8aawrr3BgSdqPj7V0RYoXo7XIb+yDFC6uESrOQ=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 
h1:/iHxaJhsFr0+xVFfbMr5vxz848jyiWuIEDhYq3y5odY=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1/go.mod 
h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 
h1:LNHhpdK7hzUcx/k1LIcuh5k7k1LGIWLQfCjaneSj7Fc=
+github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1/go.mod 
h1:uE9zaUfEQT/nbQjVi2IblCG9iaLtZsuYZ8ne+PuQ02M=
 github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 
h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=
 github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod 
h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM=
 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 
h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod 
h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 
h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY=
-github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod 
h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 
h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk=
+github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod 
h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
 github.com/BurntSushi/toml v0.3.1/go.mod 
h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v1.2.1/go.mod 
h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/toml v1.3.2 
h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
@@ -21,56 +21,47 @@
 github.com/Masterminds/semver/v3 v3.2.1 
h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
 github.com/Masterminds/semver/v3 v3.2.1/go.mod 
h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
 github.com/OneOfOne/xxhash v1.2.2/go.mod 
h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d 
h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=
-github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod 
h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
 github.com/acomagu/bufpipe v1.0.4 
h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
 github.com/acomagu/bufpipe v1.0.4/go.mod 
h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod 
h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod 
h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
 github.com/antihax/optional v1.0.0/go.mod 
h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 
h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
-github.com/aws/aws-sdk-go-v2 v1.18.1 
h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo=
-github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod 
h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw=
-github.com/aws/aws-sdk-go-v2/config v1.18.27 
h1:Az9uLwmssTE6OGTpsFqOnaGpLnKDqNYOJzWuC6UAYzA=
-github.com/aws/aws-sdk-go-v2/config v1.18.27/go.mod 
h1:0My+YgmkGxeqjXZb5BYme5pc4drjTnM+x1GJ3zv42Nw=
-github.com/aws/aws-sdk-go-v2/credentials v1.13.26 
h1:qmU+yhKmOCyujmuPY7tf5MxR/RKyZrOPO3V4DobiTUk=
-github.com/aws/aws-sdk-go-v2/credentials v1.13.26/go.mod 
h1:GoXt2YC8jHUBbA4jr+W3JiemnIbkXOfxSXcisUsZ3os=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 
h1:LxK/bitrAr4lnh9LnIS6i7zWbCOdMsfzKFBI6LUCS0I=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4/go.mod 
h1:E1hLXN/BL2e6YizK1zFlYd8vsfi2GTjbjBazinMmeaM=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 
h1:A5UqQEmPaCFpedKouS4v+dHCTUo2sKqhoKO9U5kxyWo=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod 
h1:wZpTEecJe0Btj3IYnDx/VlUzor9wm3fJHyvLpQF0VwY=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 
h1:srIVS45eQuewqz6fKKu6ZGXaq6FuFg5NzgQBAM6g8Y4=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod 
h1:7VRpKQQedkfIEXb4k52I7swUnZP0wohVajJMRn3vsUw=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 
h1:LWA+3kDM8ly001vJ1X1waCuLJdtTl48gwkPKWy9sosI=
-github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35/go.mod 
h1:0Eg1YjxE0Bhn56lx+SHJwCzhW+2JGtizsrx+lCqrfm0=
-github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13 
h1:hF7MUVNjubetjggZDtn3AmqCJzD7EUi//tSdxMYPm7U=
-github.com/aws/aws-sdk-go-v2/service/ecr v1.18.13/go.mod 
h1:XwEFO35g0uN/SftK0asWxh8Rk6DOx37R83TmWe2tzEE=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 
h1:bkRyG4a929RCnpVSTvLM2j/T4ls015ZhhYApbmYs15s=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28/go.mod 
h1:jj7znCIg05jXlaGBlFMGP8+7UN3VtCkRBG2spnmRQkU=
-github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 
h1:nneMBM2p79PGWBQovYO/6Xnc2ryRMw3InnDJq1FHkSY=
-github.com/aws/aws-sdk-go-v2/service/sso v1.12.12/go.mod 
h1:HuCOxYsF21eKrerARYO6HapNeh9GBNq7fius2AcwodY=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 
h1:2qTR7IFk7/0IN/adSFhYu9Xthr0zVFTgBrmPldILn80=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12/go.mod 
h1:E4VrHCPzmVB/KFXtqBGKb3c8zpbNBgKe3fisDNLAW5w=
-github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 
h1:XFJ2Z6sNUUcAz9poj+245DMkrHE4h2j5I9/xD50RHfE=
-github.com/aws/aws-sdk-go-v2/service/sts v1.19.2/go.mod 
h1:dp0yLPsLBOi++WTxzCjA/oZqi6NPIhoR+uF7GeMU9eg=
-github.com/aws/smithy-go v1.13.5 
h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8=
-github.com/aws/smithy-go v1.13.5/go.mod 
h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
+github.com/aws/aws-sdk-go-v2 v1.21.0 
h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzRdJc=
+github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod 
h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
+github.com/aws/aws-sdk-go-v2/config v1.18.36 
h1:mLNA12PWU1Y+ueOO79QgQfKIPhc1MYKl44RmvASkJ7Q=
+github.com/aws/aws-sdk-go-v2/config v1.18.36/go.mod 
h1:8AnEFxW9/XGKCbjYDCJy7iltVNyEI9Iu9qC21UzhhgQ=
+github.com/aws/aws-sdk-go-v2/credentials v1.13.35 
h1:QpsNitYJu0GgvMBLUIYu9H4yryA5kMksjeIVQfgXrt8=
+github.com/aws/aws-sdk-go-v2/credentials v1.13.35/go.mod 
h1:o7rCaLtvK0hUggAGclf76mNGGkaG5a9KWlp+d9IpcV8=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 
h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11/go.mod 
h1:TEPP4tENqBGO99KwVpV9MlOX4NSrSLP8u3KRy2CDwA8=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 
h1:22dGT7PneFMx4+b3pz7lMTRyN8ZKH7M2cW4GP9yUS2g=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod 
h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 
h1:SijA0mgjV8E+8G45ltVHs0fvKpTj8xmZJ3VwhGKtUSI=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod 
h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42 
h1:GPUcE/Yq7Ur8YSUk6lVkoIMWnJNO0HT18GUzCWCgCI0=
+github.com/aws/aws-sdk-go-v2/internal/ini v1.3.42/go.mod 
h1:rzfdUlfA+jdgLDmPKjd3Chq9V7LVLYo1Nz++Wb91aRo=
+github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5 
h1:hg2/a7rE9dwYr+/DPNzHQ+IsHXLNt1NsQVUecBtA8os=
+github.com/aws/aws-sdk-go-v2/service/ecr v1.19.5/go.mod 
h1:pGwmNL8hN0jpBfKfTbmu+Rl0bJkDhaGl+9PQLrZ4KLo=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 
h1:CdzPW9kKitgIiLV1+MHobfR5Xg25iYnyzWZhyQuSlDI=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35/go.mod 
h1:QGF2Rs33W5MaN9gYdEQOBBFPLwTZkEhRwI33f7KIG0o=
+github.com/aws/aws-sdk-go-v2/service/sso v1.13.5 
h1:oCvTFSDi67AX0pOX3PuPdGFewvLRU2zzFSrTsgURNo0=
+github.com/aws/aws-sdk-go-v2/service/sso v1.13.5/go.mod 
h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 
h1:dnInJb4S0oy8aQuri1mV6ipLlnZPfnsDNB9BGO9PDNY=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5/go.mod 
h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4=
+github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 
h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ=
+github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod 
h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
+github.com/aws/smithy-go v1.14.2 
h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
+github.com/aws/smithy-go v1.14.2/go.mod 
h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod 
h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 github.com/beorn7/perks v1.0.0/go.mod 
h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod 
h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bitly/go-simplejson v0.5.0 
h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
 github.com/briandowns/spinner v1.23.0 
h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
 github.com/briandowns/spinner v1.23.0/go.mod 
h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
 github.com/bshuster-repo/logrus-logstash-hook v1.0.0 
h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
 github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod 
h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
 github.com/buger/jsonparser v1.1.1/go.mod 
h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd 
h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod 
h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b 
h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod 
h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 
h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod 
h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod 
h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/cespare/xxhash v1.1.0/go.mod 
h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash/v2 v2.2.0 
h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
@@ -84,8 +75,8 @@
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod 
h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod 
h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
 github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod 
h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
-github.com/cockroachdb/apd/v2 v2.0.2 
h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
-github.com/cockroachdb/apd/v2 v2.0.2/go.mod 
h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
+github.com/cockroachdb/apd/v3 v3.2.0 
h1:79kHCn4tO0VGu3W0WujYrMjBDk8a2H4KEUYcXf7whcg=
+github.com/cockroachdb/apd/v3 v3.2.0/go.mod 
h1:klXJcjp+FffLTHlhIG69tezTDvdP065naDsHzKhYSqc=
 github.com/containerd/stargz-snapshotter/estargz v0.14.3 
h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k=
 github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod 
h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o=
 github.com/coreos/go-systemd/v22 v22.5.0/go.mod 
h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
@@ -98,15 +89,15 @@
 github.com/davecgh/go-spew v1.1.0/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/distribution/distribution/v3 v3.0.0-20230722181636-7b502560cad4 
h1:DstcWc/NnRAc1hkOJm67dl4dgeQm/Gvl965lfZyOgRI=
-github.com/distribution/distribution/v3 
v3.0.0-20230722181636-7b502560cad4/go.mod 
h1:+fqBJ4vPYo4Uu1ZE4d+bUtTLRXfdSL3NvCZIZ9GHv58=
+github.com/distribution/distribution/v3 v3.0.0-20230824182353-293b588075cb 
h1:ocxWObSQfbsmMkyEcE/tphHQU4D7yGQz5xR6AIZ16Tc=
+github.com/distribution/distribution/v3 
v3.0.0-20230824182353-293b588075cb/go.mod 
h1:WREzLx07iIFUGvbm6tBoqGt40zOC3whiM1qkcWOMFrs=
 github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
-github.com/docker/cli v23.0.5+incompatible 
h1:ufWmAOuD3Vmr7JP2G5K3cyuNC4YZWiAsuDEvFVVDafE=
-github.com/docker/cli v23.0.5+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v24.0.0+incompatible 
h1:0+1VshNwBQzQAx9lOl+OYCTCEAD8fKs/qeXMx3O0wqM=
+github.com/docker/cli v24.0.0+incompatible/go.mod 
h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
 github.com/docker/distribution v2.8.2+incompatible 
h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
 github.com/docker/distribution v2.8.2+incompatible/go.mod 
h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v23.0.5+incompatible 
h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k=
-github.com/docker/docker v23.0.5+incompatible/go.mod 
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v24.0.0+incompatible 
h1:z4bf8HvONXX9Tde5lGBMQ7yCJgNahmJumdrStZAbeY4=
+github.com/docker/docker v24.0.0+incompatible/go.mod 
h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
 github.com/docker/docker-credential-helpers v0.7.0 
h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
 github.com/docker/docker-credential-helpers v0.7.0/go.mod 
h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
 github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c 
h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
@@ -138,12 +129,12 @@
 github.com/felixge/httpsnoop v1.0.3 
h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
 github.com/felixge/httpsnoop v1.0.3/go.mod 
h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
 github.com/flowstack/go-jsonschema v0.1.1/go.mod 
h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0=
-github.com/fluxcd/pkg/oci v0.30.0 
h1:OabFWac1B6ye2aHSySwsqgiY4ud5DCHxdI9UXS686mM=
-github.com/fluxcd/pkg/oci v0.30.0/go.mod 
h1:x91ESIQjUimZSElpJTVRx3yPFBmimvulni9iBsCwXlw=
-github.com/fluxcd/pkg/sourceignore v0.3.4 
h1:0cfS2Pj7xp2qpaerMjYqOBr82LC+/mGHl6v6pRbi5hs=
-github.com/fluxcd/pkg/sourceignore v0.3.4/go.mod 
h1:ejLx+/uIrPUgqVzMTR5JiWuUnzs+zTkoEf9gS92LqaE=
-github.com/fluxcd/pkg/ssa v0.29.0 
h1:s2M6507YlYRLsPuXuGhXez/EqA5LFLhI13TZe31sm10=
-github.com/fluxcd/pkg/ssa v0.29.0/go.mod 
h1:wvmBGQC47669GqhOvi0Ec0HTMziqMSNkPIsyIPBtGTQ=
+github.com/fluxcd/pkg/oci v0.31.0 
h1:Zpp65vcFJKRfeltuswKztJh2OrB86X3VrA1LU/VjspQ=
+github.com/fluxcd/pkg/oci v0.31.0/go.mod 
h1:UL7nzm7p3fk5X0ZTsHl3qBhRy/NtuGqFSangXvPKUNw=
+github.com/fluxcd/pkg/sourceignore v0.3.5 
h1:omcHTH5X5tlPr9w1b9T7WuJTOP+o/KdVdarYb4kgkCU=
+github.com/fluxcd/pkg/sourceignore v0.3.5/go.mod 
h1:6Xz3jErz8RsidsdrjUBBUGKes24rbdp/F38MnTGibEw=
+github.com/fluxcd/pkg/ssa v0.32.0 
h1:RBqs9DNrbJkFHjpfsiKilyean7gwqWFspSBTLOaBIHs=
+github.com/fluxcd/pkg/ssa v0.32.0/go.mod 
h1:+Kf5euYAbvgJX645bo+IL7V/NlH0X7kGgFTr1W++I3c=
 github.com/fluxcd/pkg/tar v0.2.0 
h1:HEUHgONQYsJGeZZ4x6h5nQU9Aox1I4T3bOp1faWTqf8=
 github.com/fluxcd/pkg/tar v0.2.0/go.mod 
h1:w0/TOC7kwBJhnSJn7TCABkc/I7ib1f2Yz6vOsbLBnhw=
 github.com/fluxcd/pkg/version v0.2.2 
h1:ZpVXECeLA5hIQMft11iLp6gN3cKcz6UNuVTQPw/bRdI=
@@ -157,8 +148,8 @@
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod 
h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
 github.com/go-git/go-billy/v5 v5.4.1 
h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4=
 github.com/go-git/go-billy/v5 v5.4.1/go.mod 
h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
-github.com/go-git/go-git/v5 v5.7.0 
h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE=
-github.com/go-git/go-git/v5 v5.7.0/go.mod 
h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8=
+github.com/go-git/go-git/v5 v5.8.1 
h1:Zo79E4p7TRk0xoRgMq0RShiTHGKcKI4+DI6BfJc/Q+A=
+github.com/go-git/go-git/v5 v5.8.1/go.mod 
h1:FHFuoD6yGz5OSKEBK+aWN9Oah0q54Jxl0abmj6GnqAo=
 github.com/go-kit/kit v0.8.0/go.mod 
h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
 github.com/go-logfmt/logfmt v0.3.0/go.mod 
h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
 github.com/go-logfmt/logfmt v0.4.0/go.mod 
h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
@@ -174,17 +165,16 @@
 github.com/go-openapi/jsonreference v0.20.1/go.mod 
h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k=
 github.com/go-openapi/swag v0.22.3 
h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
 github.com/go-openapi/swag v0.22.3/go.mod 
h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
+github.com/go-quicktest/qt v1.100.0 
h1:I7iSLgIwNp0E0UnSvKJzs7ig0jg/Iq83zsZjtQNW7jY=
 github.com/go-stack/stack v1.8.0/go.mod 
h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 
h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
 github.com/godbus/dbus/v5 v5.0.4/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/gogo/protobuf v1.1.1/go.mod 
h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod 
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v4 v4.5.0 
h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
-github.com/golang-jwt/jwt/v4 v4.5.0/go.mod 
h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.0.0 
h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE=
+github.com/golang-jwt/jwt/v5 v5.0.0/go.mod 
h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod 
h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
-github.com/golang/glog v1.0.0/go.mod 
h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da 
h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod 
h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod 
h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
@@ -229,12 +219,11 @@
 github.com/google/go-cmp v0.5.0/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.1/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.7/go.mod 
h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
 github.com/google/go-cmp v0.5.8/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/google/go-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/go-containerregistry v0.15.2 
h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE=
-github.com/google/go-containerregistry v0.15.2/go.mod 
h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q=
+github.com/google/go-containerregistry v0.16.1 
h1:rUEt426sR6nyrL3gt+18ibRcvYpKYdpsa5ZW7MA08dQ=
+github.com/google/go-containerregistry v0.16.1/go.mod 
h1:u0qB2l7mvtWVR5kNcbFIhFY1hLbf8eeGapA+vbFDCtQ=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -252,8 +241,10 @@
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 
h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod 
h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod 
h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/hashicorp/golang-lru v0.5.4 
h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
-github.com/hashicorp/golang-lru v0.5.4/go.mod 
h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.5 
h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw=
+github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod 
h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU=
+github.com/hashicorp/golang-lru/v2 v2.0.5 
h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvHgwfx2Vm4=
+github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod 
h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
 github.com/homeport/dyff v1.5.8 h1:CZvnYFh6Pr/c+d32EnWODAHRTctrDKkz0tFr6yTYCpU=
 github.com/homeport/dyff v1.5.8/go.mod 
h1:S669ekLW2ttUp6lT1d0jIlmH+eAsP3psfl9K6oMIBeU=
 github.com/imdario/mergo v0.3.15 
h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
@@ -290,7 +281,7 @@
 github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
 github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
+github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
 github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de 
h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
 github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod 
h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
 github.com/lucasb-eyer/go-colorful v1.2.0 
h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
@@ -324,7 +315,6 @@
 github.com/mitchellh/go-wordwrap v1.0.1/go.mod 
h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
 github.com/mitchellh/hashstructure v1.1.0 
h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0=
 github.com/mitchellh/hashstructure v1.1.0/go.mod 
h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=
-github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f 
h1:2+myh5ml7lgEU/51gbeLHfKGNfgEQQIWrlbdaOsidbQ=
 github.com/moby/spdystream v0.2.0 
h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8=
 github.com/moby/spdystream v0.2.0/go.mod 
h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
 github.com/moby/term v0.0.0-20221205130635-1aeaba878587 
h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
@@ -389,8 +379,8 @@
 github.com/prometheus/procfs v0.0.3/go.mod 
h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
 github.com/prometheus/procfs v0.9.0 
h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
 github.com/prometheus/procfs v0.9.0/go.mod 
h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
-github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b 
h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4=
-github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod 
h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78=
+github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0 
h1:sadMIsgmHpEOGbUs6VtHBXRR1OHevnj7hLx9ZcdNGW4=
+github.com/protocolbuffers/txtpbfmt v0.0.0-20230328191034-3462fbc510c0/go.mod 
h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c=
 github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
 github.com/rivo/uniseg v0.2.0/go.mod 
h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod 
h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
@@ -441,12 +431,6 @@
 github.com/xlab/treeprint v1.1.0/go.mod 
h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 
h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI=
-github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod 
h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs=
-github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 
h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE=
-github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod 
h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA=
-github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f 
h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY=
-github.com/yvasiyarov/newrelic_platform_go 
v0.0.0-20140908184405-b21fdbd4370f/go.mod 
h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
 go.opentelemetry.io/proto/otlp v0.7.0/go.mod 
h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
 go.starlark.net v0.0.0-20221028183056-acb66ad56dd2 
h1:5/KzhcSqd4UgY51l17r7C5g/JiE6DRw1Vq7VJfQHuMc=
 go.starlark.net v0.0.0-20221028183056-acb66ad56dd2/go.mod 
h1:kIVgS18CjmEC3PqMd5kaJSGEifyV/CeB9x506ZJ1Vbk=
@@ -461,14 +445,16 @@
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA=
-golang.org/x/crypto v0.11.0/go.mod 
h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
+golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
+golang.org/x/crypto v0.12.0/go.mod 
h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod 
h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod 
h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod 
h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod 
h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
+golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -484,12 +470,12 @@
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod 
h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod 
h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
-golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
+golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
+golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod 
h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod 
h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g=
-golang.org/x/oauth2 v0.7.0/go.mod 
h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
+golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8=
+golang.org/x/oauth2 v0.8.0/go.mod 
h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -521,19 +507,19 @@
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
-golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
+golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c=
-golang.org/x/term v0.10.0/go.mod 
h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
+golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0=
+golang.org/x/term v0.11.0/go.mod 
h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
-golang.org/x/text v0.11.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
+golang.org/x/text v0.12.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -628,15 +614,15 @@
 k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 sigs.k8s.io/cli-utils v0.35.0 h1:dfSJaF1W0frW74PtjwiyoB4cwdRygbHnC7qe7HF0g/Y=
 sigs.k8s.io/cli-utils v0.35.0/go.mod 
h1:ITitykCJxP1vaj1Cew/FZEaVJ2YsTN9Q71m02jebkoE=
-sigs.k8s.io/controller-runtime v0.15.0 
h1:ML+5Adt3qZnMSYxZ7gAverBLNPSMQEibtzAgp0UPojU=
-sigs.k8s.io/controller-runtime v0.15.0/go.mod 
h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk=
+sigs.k8s.io/controller-runtime v0.15.1 
h1:9UvgKD4ZJGcj24vefUFgZFP3xej/3igL9BsOUTb/+4c=
+sigs.k8s.io/controller-runtime v0.15.1/go.mod 
h1:7ngYvp1MLT+9GeZ+6lH3LOlcHkp/+tzA/fmHa4iq9kk=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd 
h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod 
h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
 sigs.k8s.io/kustomize/api v0.13.2 
h1:kejWfLeJhUsTGioDoFNJET5LQe/ajzXhJGYoU+pJsiA=
 sigs.k8s.io/kustomize/api v0.13.2/go.mod 
h1:DUp325VVMFVcQSq+ZxyDisA8wtldwHxLZbr1g94UHsw=
 sigs.k8s.io/kustomize/kyaml v0.14.1 
h1:c8iibius7l24G2wVAGZn/Va2wNys03GXLjYVIcFVxKA=
 sigs.k8s.io/kustomize/kyaml v0.14.1/go.mod 
h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3 
h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
-sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod 
h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
+sigs.k8s.io/structured-merge-diff/v4 v4.3.0 
h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk=
+sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod 
h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
 sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
 sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/internal/engine/fetcher.go 
new/timoni-0.12.1/internal/engine/fetcher.go
--- old/timoni-0.11.1/internal/engine/fetcher.go        2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/fetcher.go        2023-09-03 
17:42:09.000000000 +0200
@@ -76,7 +76,7 @@
 
        mr := apiv1.ModuleReference{
                Repository: f.src,
-               Version:    "devel",
+               Version:    defaultDevelVersion,
                Digest:     "unknown",
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/internal/engine/module_builder.go 
new/timoni-0.12.1/internal/engine/module_builder.go
--- old/timoni-0.11.1/internal/engine/module_builder.go 2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/module_builder.go 2023-09-03 
17:42:09.000000000 +0200
@@ -22,6 +22,7 @@
        "path/filepath"
 
        "cuelang.org/go/cue"
+       "cuelang.org/go/cue/ast"
        "cuelang.org/go/cue/cuecontext"
        "cuelang.org/go/cue/load"
 
@@ -29,19 +30,22 @@
 )
 
 const (
-       defaultPackage    = "main"
-       defaultValuesFile = "values.cue"
-       defaultSchemaFile = "timoni.schema.cue"
+       defaultPackage      = "main"
+       defaultValuesFile   = "values.cue"
+       defaultSchemaFile   = "timoni.schema.cue"
+       defaultDevelVersion = "0.0.0-devel"
 )
 
 // ModuleBuilder compiles CUE definitions to Kubernetes objects.
 type ModuleBuilder struct {
-       ctx        *cue.Context
-       moduleRoot string
-       pkgName    string
-       pkgPath    string
-       name       string
-       namespace  string
+       ctx           *cue.Context
+       moduleRoot    string
+       pkgName       string
+       pkgPath       string
+       name          string
+       namespace     string
+       moduleVersion string
+       kubeVersion   string
 }
 
 // NewModuleBuilder creates a ModuleBuilder for the given module and package.
@@ -50,12 +54,14 @@
                ctx = cuecontext.New()
        }
        b := &ModuleBuilder{
-               ctx:        ctx,
-               moduleRoot: moduleRoot,
-               pkgName:    pkgName,
-               pkgPath:    moduleRoot,
-               name:       name,
-               namespace:  namespace,
+               ctx:           ctx,
+               moduleRoot:    moduleRoot,
+               pkgName:       pkgName,
+               pkgPath:       moduleRoot,
+               name:          name,
+               namespace:     namespace,
+               moduleVersion: defaultDevelVersion,
+               kubeVersion:   defaultDevelVersion,
        }
        if pkgName != defaultPackage {
                b.pkgPath = filepath.Join(moduleRoot, pkgName)
@@ -116,6 +122,18 @@
        return os.WriteFile(filepath.Join(b.pkgPath, defaultSchemaFile), 
[]byte(cueGen), 0644)
 }
 
+// SetVersionInfo allows setting the Timoni module version and Kubernetes 
version,
+// which are injected at build time as optional CUE tags.
+func (b *ModuleBuilder) SetVersionInfo(moduleVersion, kubeVersion string) {
+       if moduleVersion != "" {
+               b.moduleVersion = moduleVersion
+       }
+
+       if kubeVersion != "" {
+               b.kubeVersion = kubeVersion
+       }
+}
+
 // Build builds a CUE instances for the specified package and returns the CUE 
value.
 func (b *ModuleBuilder) Build() (cue.Value, error) {
        var value cue.Value
@@ -128,7 +146,18 @@
                        "name=" + b.name,
                        "namespace=" + b.namespace,
                },
-               TagVars: map[string]load.TagVar{},
+               TagVars: map[string]load.TagVar{
+                       "moduleVersion": {
+                               Func: func() (ast.Expr, error) {
+                                       return ast.NewString(b.moduleVersion), 
nil
+                               },
+                       },
+                       "kubeVersion": {
+                               Func: func() (ast.Expr, error) {
+                                       return ast.NewString(b.kubeVersion), nil
+                               },
+                       },
+               },
        }
 
        ix := load.Instances([]string{}, cfg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/internal/engine/module_builder_test.go 
new/timoni-0.12.1/internal/engine/module_builder_test.go
--- old/timoni-0.11.1/internal/engine/module_builder_test.go    2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/module_builder_test.go    2023-09-03 
17:42:09.000000000 +0200
@@ -46,6 +46,8 @@
        err = mb.MergeValuesFile([][]byte{mustReadFile(g, 
"testdata/module-values/overlay.cue")})
        g.Expect(err).ToNot(HaveOccurred())
 
+       mb.SetVersionInfo("", "1.25.3")
+
        val, err := mb.Build()
        g.Expect(err).ToNot(HaveOccurred())
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/internal/engine/testdata/module/templates/config.cue 
new/timoni-0.12.1/internal/engine/testdata/module/templates/config.cue
--- old/timoni-0.11.1/internal/engine/testdata/module/templates/config.cue      
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/testdata/module/templates/config.cue      
2023-09-03 17:42:09.000000000 +0200
@@ -5,7 +5,9 @@
                name:      *"test" | string
                namespace: *"default" | string
        }
-       hostname: *"default.internal" | string
+       hostname:      *"default.internal" | string
+       moduleVersion: string
+       kubeVersion:   string
 }
 
 #Instance: {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/internal/engine/testdata/module/templates/kube.cue 
new/timoni-0.12.1/internal/engine/testdata/module/templates/kube.cue
--- old/timoni-0.11.1/internal/engine/testdata/module/templates/kube.cue        
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/testdata/module/templates/kube.cue        
2023-09-03 17:42:09.000000000 +0200
@@ -1,11 +1,17 @@
 package templates
 
+import "strings"
+
 #KubeConfig: {
        _config:    #Config
        apiVersion: "v1"
        kind:       "ConfigMap"
        metadata:   _config.metadata
        data: {
-               url: "https://\(_config.hostname)"
+               url:           "https://\(_config.hostname)"
+               moduleVersion: _config.moduleVersion
+               if strings.HasPrefix(_config.kubeVersion, "1.25") {
+                       kubeVersion: _config.kubeVersion
+               }
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/internal/engine/testdata/module/timoni.cue 
new/timoni-0.12.1/internal/engine/testdata/module/timoni.cue
--- old/timoni-0.11.1/internal/engine/testdata/module/timoni.cue        
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/testdata/module/timoni.cue        
2023-09-03 17:42:09.000000000 +0200
@@ -31,6 +31,10 @@
                        name:      string @tag(name)
                        namespace: string @tag(namespace)
                }
+               config: {
+                       moduleVersion: string @tag(mv, var=moduleVersion)
+                       kubeVersion:   string @tag(kv, var=kubeVersion)
+               }
        }
 
        // Pass Kubernetes resources outputted by the instance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/timoni-0.11.1/internal/engine/testdata/module-golden/overlay.cue 
new/timoni-0.12.1/internal/engine/testdata/module-golden/overlay.cue
--- old/timoni-0.11.1/internal/engine/testdata/module-golden/overlay.cue        
2023-07-31 21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/engine/testdata/module-golden/overlay.cue        
2023-09-03 17:42:09.000000000 +0200
@@ -6,6 +6,8 @@
                namespace: "test-namespace"
        }
        data: {
-               url: "https://test.internal";
+               url:           "https://test.internal";
+               kubeVersion:   "1.25.3"
+               moduleVersion: "0.0.0-devel"
        }
 }]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/internal/runtime/resources.go 
new/timoni-0.12.1/internal/runtime/resources.go
--- old/timoni-0.11.1/internal/runtime/resources.go     2023-07-31 
21:47:47.000000000 +0200
+++ new/timoni-0.12.1/internal/runtime/resources.go     2023-09-03 
17:42:09.000000000 +0200
@@ -18,11 +18,12 @@
 
 import (
        "fmt"
+       "strings"
+       "time"
+
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
        "k8s.io/apimachinery/pkg/runtime/schema"
-       "strings"
-       "time"
 
        "github.com/fluxcd/pkg/ssa"
        corev1 "k8s.io/api/core/v1"
@@ -64,7 +65,12 @@
 
        kubePoller := polling.NewStatusPoller(kubeClient, restMapper, 
polling.Options{})
 
-       return ssa.NewResourceManager(kubeClient, kubePoller, ownerRef), nil
+       man := ssa.NewResourceManager(kubeClient, kubePoller, ownerRef)
+
+       // bump the server-side apply concurrency
+       man.SetConcurrency(4)
+
+       return man, nil
 }
 
 // SelectObjectsFromSet returns a list of Kubernetes objects from the given 
changeset filtered by action.
@@ -93,6 +99,9 @@
                ForceSelector: map[string]string{
                        apiv1.ForceAction: apiv1.EnabledValue,
                },
+               IfNotPresentSelector: map[string]string{
+                       apiv1.IfNotPresentAction: apiv1.EnabledValue,
+               },
                WaitTimeout: wait,
        }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/timoni-0.11.1/internal/runtime/version.go 
new/timoni-0.12.1/internal/runtime/version.go
--- old/timoni-0.11.1/internal/runtime/version.go       1970-01-01 
01:00:00.000000000 +0100
+++ new/timoni-0.12.1/internal/runtime/version.go       2023-09-03 
17:42:09.000000000 +0200
@@ -0,0 +1,53 @@
+/*
+Copyright 2023 Stefan Prodan
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package runtime
+
+import (
+       "fmt"
+       "time"
+
+       "github.com/Masterminds/semver/v3"
+       "k8s.io/cli-runtime/pkg/genericclioptions"
+       "k8s.io/client-go/kubernetes"
+)
+
+// ServerVersion retrieves and parses the Kubernetes server's version.
+func ServerVersion(rcg genericclioptions.RESTClientGetter) (string, error) {
+       cfg, err := rcg.ToRESTConfig()
+       if err != nil {
+               return "", fmt.Errorf("loading kubeconfig failed: %w", err)
+       }
+
+       cfg.Timeout = 5 * time.Second
+
+       kubeClient, err := kubernetes.NewForConfig(cfg)
+       if err != nil {
+               return "", fmt.Errorf("initialising client failed: %w", err)
+       }
+
+       serverVer, err := kubeClient.Discovery().ServerVersion()
+       if err != nil {
+               return "", fmt.Errorf("reading server version failed: %w", err)
+       }
+
+       ver, err := semver.NewVersion(serverVer.GitVersion)
+       if err != nil {
+               return "", fmt.Errorf("parsing server version failed: %w", err)
+       }
+
+       return ver.String(), nil
+}

++++++ timoni.obsinfo ++++++
--- /var/tmp/diff_new_pack.XJ8vUP/_old  2023-09-06 19:01:48.339285137 +0200
+++ /var/tmp/diff_new_pack.XJ8vUP/_new  2023-09-06 19:01:48.343285281 +0200
@@ -1,5 +1,5 @@
 name: timoni
-version: 0.11.1
-mtime: 1690832867
-commit: 3e99a6045487156a2e235d525aa446f2b5b09789
+version: 0.12.1
+mtime: 1693755729
+commit: 51ff2903853bf29fbbbf487fe5a44e61d692034f
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/timoni/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.timoni.new.1766/vendor.tar.gz differ: char 5, line 1

Reply via email to