Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package updatecli for openSUSE:Factory 
checked in at 2026-06-03 20:25:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/updatecli (Old)
 and      /work/SRC/openSUSE:Factory/.updatecli.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "updatecli"

Wed Jun  3 20:25:06 2026 rev:42 rq:1356855 version:0.118.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/updatecli/updatecli.changes      2026-05-30 
22:58:17.116642192 +0200
+++ /work/SRC/openSUSE:Factory/.updatecli.new.1937/updatecli.changes    
2026-06-03 20:28:34.668529257 +0200
@@ -1,0 +2,29 @@
+Wed Jun 03 04:36:13 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 0.118.0:
+  * Features
+    - feat: add disable changelog flag and env var @omer-cengel
+      (#8969)
+  * Bug Fixes
+    - fix: skip version check for generator commands @ambikeesshh
+      (#9064)
+    - chore: don't show version diff if newer @olblak (#9000)
+  * Maintenance
+    - deps(go): bump module github.com/fluxcd/helm-controller/api
+      to v1.5.5 @updateclibot[bot] (#9093)
+    - chore(ci): upgrade uv version @updateclibot[bot] (#9046)
+    - chore(dockerfile): upgrade node version @updateclibot[bot]
+      (#9009)
+    - deps(go): bump module github.com/drone/go-scm to v1.42.3
+      @updateclibot[bot] (#8990)
+    - deps(go): bump module github.com/fluxcd/source-controller/api
+      to v1.8.5 @updateclibot[bot] (#8994)
+    - chore: add govulncheck GitHub Action workflow @olblak (#9007)
+    - deps(go): bump module github.com/google/go-containerregistry
+      to v0.21.6 @updateclibot[bot] (#8995)
+    - deps(go): bump module github.com/tetratelabs/wazero to
+      v1.12.0 @updateclibot[bot] (#9002)
+    - chore: updatecli docs handle different exit code @olblak
+      (#9001)
+
+-------------------------------------------------------------------

Old:
----
  updatecli-0.117.1.obscpio

New:
----
  updatecli-0.118.0.obscpio

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

Other differences:
------------------
++++++ updatecli.spec ++++++
--- /var/tmp/diff_new_pack.G6H5qM/_old  2026-06-03 20:28:38.252677690 +0200
+++ /var/tmp/diff_new_pack.G6H5qM/_new  2026-06-03 20:28:38.296679512 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           updatecli
-Version:        0.117.1
+Version:        0.118.0
 Release:        0
 Summary:        A Declarative Dependency Management tool
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.G6H5qM/_old  2026-06-03 20:28:38.536689452 +0200
+++ /var/tmp/diff_new_pack.G6H5qM/_new  2026-06-03 20:28:38.568690777 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/updatecli/updatecli</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.117.1</param>
+    <param name="revision">v0.118.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.G6H5qM/_old  2026-06-03 20:28:38.744698066 +0200
+++ /var/tmp/diff_new_pack.G6H5qM/_new  2026-06-03 20:28:38.780699557 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/updatecli/updatecli</param>
-              <param 
name="changesrevision">cdcf7cca0ce55eff8bfcb7ab1108f2e34c7518a7</param></service></servicedata>
+              <param 
name="changesrevision">786ba9fbb8374d9c23e18b062f29ac1a95fd2b3c</param></service></servicedata>
 (No newline at EOF)
 

++++++ updatecli-0.117.1.obscpio -> updatecli-0.118.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/README.md 
new/updatecli-0.118.0/README.md
--- old/updatecli-0.117.1/README.md     2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/README.md     2026-06-02 14:32:06.000000000 +0200
@@ -123,7 +123,7 @@
 **Verify Container signature**
 
 ```
-cosign verify --certificate-identity-regexp 
"https://github.com/updatecli/updatecli"; --certificate-oidc-issuer 
"https://token.actions.githubusercontent.com"; 
ghcr.io/updatecli/updatecli:v0.117.0
+cosign verify --certificate-identity-regexp 
"https://github.com/updatecli/updatecli"; --certificate-oidc-issuer 
"https://token.actions.githubusercontent.com"; 
ghcr.io/updatecli/updatecli:v0.117.1
 ```
 
 ## Documentation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/apply.go 
new/updatecli-0.118.0/cmd/apply.go
--- old/updatecli-0.117.1/cmd/apply.go  2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/cmd/apply.go  2026-06-02 14:32:06.000000000 +0200
@@ -48,6 +48,7 @@
                        e.Options.Pipeline.Target.DryRun = false
                        e.Options.Pipeline.Target.CleanGitBranches = 
applyCleanGitBranches
                        e.Options.Pipeline.Target.ExistingOnly = 
applyExistingOnly
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        logrus.Warningln("Deprecated command, please instead 
use `updatecli pipeline apply`")
 
@@ -74,4 +75,6 @@
        applyCmd.Flags().BoolVar(&applyCleanGitBranches, "clean-git-branches", 
false, "Remove updatecli working git branches like '--clean-git-branches=true'")
        applyCmd.Flags().StringArrayVar(&pipelineIds, "pipeline-ids", 
[]string{}, "Filter pipelines to apply by their pipeline IDs, accepted as comma 
separated list")
        applyCmd.Flags().StringArrayVar(&labels, "labels", []string{}, "Filter 
pipelines by their labels, accepted as a comma separated list (key:value)")
+
+       addDisableChangelogFlag(applyCmd, &disableChangelog)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/compose_apply.go 
new/updatecli-0.118.0/cmd/compose_apply.go
--- old/updatecli-0.117.1/cmd/compose_apply.go  2026-05-29 09:14:42.000000000 
+0200
+++ new/updatecli-0.118.0/cmd/compose_apply.go  2026-06-02 14:32:06.000000000 
+0200
@@ -53,6 +53,7 @@
                        e.Options.Pipeline.Target.DryRun = false
                        e.Options.Pipeline.Target.CleanGitBranches = 
composeApplyCleanGitBranches
                        e.Options.Pipeline.Target.ExistingOnly = 
composeApplyExistingOnly
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        err = run("compose/apply")
                        if err != nil {
@@ -77,5 +78,7 @@
        composeApplyCmd.Flags().StringArrayVar(&composeApplyOnlyPolicyIDs, 
"only-policy-ids", []string{}, "Filter policies to apply by their policy IDs, 
accepted as a comma separated list")
        composeApplyCmd.Flags().StringArrayVar(&composeApplyIgnoredPolicyIDs, 
"ignored-policy-ids", []string{}, "Filter policies to ignore by their policy 
IDs, accepted as a comma separated list")
 
+       addDisableChangelogFlag(composeApplyCmd, &disableChangelog)
+
        composeCmd.AddCommand(composeApplyCmd)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/compose_diff.go 
new/updatecli-0.118.0/cmd/compose_diff.go
--- old/updatecli-0.117.1/cmd/compose_diff.go   2026-05-29 09:14:42.000000000 
+0200
+++ new/updatecli-0.118.0/cmd/compose_diff.go   2026-06-02 14:32:06.000000000 
+0200
@@ -46,6 +46,7 @@
                        e.Options.Pipeline.Target.Push = false
                        e.Options.Pipeline.Target.Clean = composeCmdClean
                        e.Options.Pipeline.Target.DryRun = true
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        err = run("compose/diff")
                        if err != nil {
@@ -65,5 +66,8 @@
        composeDiffCmd.Flags().StringArrayVar(&labels, "labels", []string{}, 
"Filter pipelines to apply by their labels, accepted as a comma separated list 
(key:value)")
        composeDiffCmd.Flags().StringArrayVar(&composeDiffOnlyPolicyIDs, 
"only-policy-ids", []string{}, "Filter policies to apply by their policy IDs, 
accepted as a comma separated list")
        composeDiffCmd.Flags().StringArrayVar(&composeDiffIgnoredPolicyIDs, 
"ignored-policy-ids", []string{}, "Filter policies to ignore by their policy 
IDs, accepted as a comma separated list")
+
+       addDisableChangelogFlag(composeDiffCmd, &disableChangelog)
+
        composeCmd.AddCommand(composeDiffCmd)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/diff.go 
new/updatecli-0.118.0/cmd/diff.go
--- old/updatecli-0.117.1/cmd/diff.go   2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/cmd/diff.go   2026-06-02 14:32:06.000000000 +0200
@@ -35,6 +35,7 @@
                        e.Options.Pipeline.Target.Push = false
                        e.Options.Pipeline.Target.Clean = diffClean
                        e.Options.Pipeline.Target.DryRun = true
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        logrus.Warningln("Deprecated command, please instead 
use `updatecli pipeline diff`")
 
@@ -57,4 +58,6 @@
        diffCmd.Flags().BoolVar(&disableTLS, "disable-tls", false, "Disable TLS 
verification like '--disable-tls=true'")
        diffCmd.Flags().StringArrayVar(&pipelineIds, "pipeline-ids", 
[]string{}, "Filter pipelines to apply by their pipeline IDs, accepted a comma 
separated list")
        diffCmd.Flags().StringArrayVar(&labels, "labels", []string{}, "Filter 
pipelines to apply by their labels, accepted as a comma separated list 
(key:value)")
+
+       addDisableChangelogFlag(diffCmd, &disableChangelog)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/docs.go 
new/updatecli-0.118.0/cmd/docs.go
--- old/updatecli-0.117.1/cmd/docs.go   2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/cmd/docs.go   2026-06-02 14:32:06.000000000 +0200
@@ -1,10 +1,14 @@
 package cmd
 
 import (
+       "crypto/sha256"
        "fmt"
+       "io"
+       "os"
        "path/filepath"
        "strings"
 
+       "github.com/sirupsen/logrus"
        "github.com/spf13/cobra"
        "github.com/spf13/cobra/doc"
 )
@@ -47,16 +51,32 @@
                Use:    "docs",
                Hidden: true,
                Short:  "Generate updatecli documentation",
-               Run: func(cmd *cobra.Command, args []string) {
+               RunE: func(cmd *cobra.Command, args []string) error {
                        rootCmd.DisableAutoGenTag = true
-                       err := doc.GenMarkdownTreeCustom(
-                               rootCmd,
-                               docsDir,
-                               docPrepender,
-                               linkhandler)
+
+                       before, err := snapshotDir(docsDir)
+                       if err != nil {
+                               return err
+                       }
+
+                       if err = doc.GenMarkdownTreeCustom(rootCmd, docsDir, 
docPrepender, linkhandler); err != nil {
+                               return err
+                       }
+
+                       after, err := snapshotDir(docsDir)
                        if err != nil {
-                               panic(err)
+                               return err
+                       }
+
+                       for path, hash := range after {
+                               if prev, exists := before[path]; !exists || 
prev != hash {
+                                       logrus.Infof("Documentation files 
updated in %q", docsDir)
+                                       os.Exit(2)
+                               }
                        }
+
+                       logrus.Infof("Documentation files already up to date in 
%q", docsDir)
+                       return nil
                },
        }
 )
@@ -64,3 +84,43 @@
 func init() {
        docsCmd.Flags().StringVarP(&docsDir, "docs", "d", "./docs", "Specify 
the directory where to generate documentation files")
 }
+
+// snapshotDir returns a map of file paths (relative to dir) to their SHA-256 
hash.
+// If the directory does not exist yet, an empty map is returned.
+func snapshotDir(dir string) (map[string][sha256.Size]byte, error) {
+       hashes := make(map[string][sha256.Size]byte)
+
+       if _, err := os.Stat(dir); os.IsNotExist(err) {
+               return hashes, nil
+       }
+
+       err := filepath.WalkDir(dir, func(path string, d os.DirEntry, err 
error) error {
+               if err != nil {
+                       return err
+               }
+               if d.IsDir() {
+                       return nil
+               }
+
+               f, err := os.Open(path)
+               if err != nil {
+                       return err
+               }
+               defer f.Close()
+
+               h := sha256.New()
+               if _, err = io.Copy(h, f); err != nil {
+                       return err
+               }
+
+               rel, err := filepath.Rel(dir, path)
+               if err != nil {
+                       return err
+               }
+
+               hashes[rel] = [sha256.Size]byte(h.Sum(nil))
+               return nil
+       })
+
+       return hashes, err
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/env.go 
new/updatecli-0.118.0/cmd/env.go
--- old/updatecli-0.117.1/cmd/env.go    1970-01-01 01:00:00.000000000 +0100
+++ new/updatecli-0.118.0/cmd/env.go    2026-06-02 14:32:06.000000000 +0200
@@ -0,0 +1,35 @@
+package cmd
+
+import (
+       "os"
+       "strconv"
+       "strings"
+
+       "github.com/sirupsen/logrus"
+)
+
+const DisableChangelogEnvVar = "UPDATECLI_DISABLE_CHANGELOG"
+
+const DisableVersionCheckEnvVar = "UPDATECLI_DISABLE_VERSION_CHECK"
+
+// getEnvBoolOrDefault reads a boolean environment variable.
+// It returns defaultValue when the variable is unset or invalid.
+func getEnvBoolOrDefault(envVar string, defaultValue bool) bool {
+       value, ok := os.LookupEnv(envVar)
+       if !ok {
+               return defaultValue
+       }
+
+       parsed, err := strconv.ParseBool(strings.TrimSpace(value))
+       if err != nil {
+               logrus.Debugf(
+                       "invalid boolean value for environment variable %q: %q, 
defaulting to %t",
+                       envVar,
+                       value,
+                       defaultValue,
+               )
+               return defaultValue
+       }
+
+       return parsed
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/env_test.go 
new/updatecli-0.118.0/cmd/env_test.go
--- old/updatecli-0.117.1/cmd/env_test.go       1970-01-01 01:00:00.000000000 
+0100
+++ new/updatecli-0.118.0/cmd/env_test.go       2026-06-02 14:32:06.000000000 
+0200
@@ -0,0 +1,99 @@
+package cmd
+
+import (
+       "testing"
+)
+
+func TestGetEnvBoolOrDefault(t *testing.T) {
+       tests := []struct {
+               name         string
+               envVar       string
+               envValue     string
+               setEnv       bool
+               defaultValue bool
+               expected     bool
+       }{
+               {
+                       name:         "not_set_returns_default_true",
+                       envVar:       "UNDEFINED_VAR_1",
+                       defaultValue: true,
+                       expected:     true,
+               },
+               {
+                       name:         "not_set_returns_default_false",
+                       envVar:       "UNDEFINED_VAR_2",
+                       defaultValue: false,
+                       expected:     false,
+               },
+               {
+                       name:         "set_to_true",
+                       envVar:       "TEST_VAR_TRUE",
+                       envValue:     "true",
+                       setEnv:       true,
+                       defaultValue: false,
+                       expected:     true,
+               },
+               {
+                       name:         "set_to_false",
+                       envVar:       "TEST_VAR_FALSE",
+                       envValue:     "false",
+                       setEnv:       true,
+                       defaultValue: true,
+                       expected:     false,
+               },
+               {
+                       name:         "set_to_1",
+                       envVar:       "TEST_VAR_1",
+                       envValue:     "1",
+                       setEnv:       true,
+                       defaultValue: false,
+                       expected:     true,
+               },
+               {
+                       name:         "set_to_0",
+                       envVar:       "TEST_VAR_0",
+                       envValue:     "0",
+                       setEnv:       true,
+                       defaultValue: true,
+                       expected:     false,
+               },
+               {
+                       name:         "whitespace_trimmed",
+                       envVar:       "TEST_VAR_SPACE",
+                       envValue:     "  true  ",
+                       setEnv:       true,
+                       defaultValue: false,
+                       expected:     true,
+               },
+               {
+                       name:         "invalid_returns_default_true",
+                       envVar:       "TEST_VAR_INVALID_1",
+                       envValue:     "invalid",
+                       setEnv:       true,
+                       defaultValue: true,
+                       expected:     true,
+               },
+               {
+                       name:         "invalid_returns_default_false",
+                       envVar:       "TEST_VAR_INVALID_2",
+                       envValue:     "maybe",
+                       setEnv:       true,
+                       defaultValue: false,
+                       expected:     false,
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       if tt.setEnv {
+                               t.Setenv(tt.envVar, tt.envValue)
+                       }
+
+                       result := getEnvBoolOrDefault(tt.envVar, 
tt.defaultValue)
+
+                       if result != tt.expected {
+                               t.Errorf("got %v, expected %v", result, 
tt.expected)
+                       }
+               })
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/flags.go 
new/updatecli-0.118.0/cmd/flags.go
--- old/updatecli-0.117.1/cmd/flags.go  1970-01-01 01:00:00.000000000 +0100
+++ new/updatecli-0.118.0/cmd/flags.go  2026-06-02 14:32:06.000000000 +0200
@@ -0,0 +1,15 @@
+package cmd
+
+import "github.com/spf13/cobra"
+
+// addDisableChangelogFlag registers the shared --disable-changelog flag on the
+// provided command, using the value from UPDATECLI_DISABLE_CHANGELOG as the
+// default when the flag is not explicitly passed.
+func addDisableChangelogFlag(cmd *cobra.Command, dest *bool) {
+       cmd.Flags().BoolVar(
+               dest,
+               "disable-changelog",
+               getEnvBoolOrDefault(DisableChangelogEnvVar, false),
+               "Disable changelog retrieval to avoid unnecessary requests 
(env: "+DisableChangelogEnvVar+")",
+       )
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/flags_test.go 
new/updatecli-0.118.0/cmd/flags_test.go
--- old/updatecli-0.117.1/cmd/flags_test.go     1970-01-01 01:00:00.000000000 
+0100
+++ new/updatecli-0.118.0/cmd/flags_test.go     2026-06-02 14:32:06.000000000 
+0200
@@ -0,0 +1,128 @@
+package cmd
+
+import (
+       "strings"
+       "testing"
+
+       "github.com/spf13/cobra"
+)
+
+func TestAddDisableChangelogFlagRegistration(t *testing.T) {
+       t.Setenv(DisableChangelogEnvVar, "false")
+
+       cmd := &cobra.Command{
+               Use: "test",
+       }
+
+       var disableChangelog bool
+       addDisableChangelogFlag(cmd, &disableChangelog)
+
+       // Check that flag exists
+       flag := cmd.Flags().Lookup("disable-changelog")
+       if flag == nil {
+               t.Fatal("flag not registered")
+       }
+
+       // Check flag has help text
+       if flag.Usage == "" {
+               t.Error("flag help text is empty")
+       }
+
+       // Check that env var name appears in help text
+       if !strings.Contains(flag.Usage, DisableChangelogEnvVar) {
+               t.Errorf(
+                       "flag help text does not mention env var %q: help text 
is %q",
+                       DisableChangelogEnvVar,
+                       flag.Usage,
+               )
+       }
+
+       // Check default value is "false" when env var not set
+       if flag.DefValue != "false" {
+               t.Errorf(
+                       "flag default value when no env var: got %q, expected 
%q",
+                       flag.DefValue,
+                       "false",
+               )
+       }
+}
+
+func TestAddDisableChangelogFlagUsesEnvDefault(t *testing.T) {
+       tests := []struct {
+               name        string
+               envValue    string
+               expectedDef string
+       }{
+               {
+                       name:        "env_var_true",
+                       envValue:    "true",
+                       expectedDef: "true",
+               },
+               {
+                       name:        "env_var_false",
+                       envValue:    "false",
+                       expectedDef: "false",
+               },
+               {
+                       name:        "env_var_1",
+                       envValue:    "1",
+                       expectedDef: "true",
+               },
+               {
+                       name:        "env_var_0",
+                       envValue:    "0",
+                       expectedDef: "false",
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       t.Setenv(DisableChangelogEnvVar, tt.envValue)
+
+                       cmd := &cobra.Command{
+                               Use: "test",
+                       }
+
+                       var disableChangelog bool
+                       addDisableChangelogFlag(cmd, &disableChangelog)
+
+                       flag := cmd.Flags().Lookup("disable-changelog")
+                       if flag == nil {
+                               t.Fatal("flag not registered")
+                       }
+
+                       if flag.DefValue != tt.expectedDef {
+                               t.Errorf(
+                                       "flag default value: got %q, expected 
%q",
+                                       flag.DefValue,
+                                       tt.expectedDef,
+                               )
+                       }
+               })
+       }
+}
+
+func TestDisableChangelogFlagOverridesEnv(t *testing.T) {
+       t.Setenv(DisableChangelogEnvVar, "true")
+
+       cmd := &cobra.Command{
+               Use: "test",
+               RunE: func(cmd *cobra.Command, args []string) error {
+                       return nil
+               },
+       }
+
+       var disableChangelog bool
+       addDisableChangelogFlag(cmd, &disableChangelog)
+
+       cmd.SetArgs([]string{"--disable-changelog=false"})
+
+       err := cmd.Execute()
+       if err != nil {
+               t.Fatalf("unexpected error: %v", err)
+       }
+
+       if disableChangelog {
+               t.Error("expected flag to override env var")
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/pipeline_apply.go 
new/updatecli-0.118.0/cmd/pipeline_apply.go
--- old/updatecli-0.117.1/cmd/pipeline_apply.go 2026-05-29 09:14:42.000000000 
+0200
+++ new/updatecli-0.118.0/cmd/pipeline_apply.go 2026-06-02 14:32:06.000000000 
+0200
@@ -42,6 +42,7 @@
                        e.Options.Pipeline.Target.DryRun = false
                        e.Options.Pipeline.Target.CleanGitBranches = 
applyCleanGitBranches
                        e.Options.Pipeline.Target.ExistingOnly = 
applyExistingOnly
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        err = run("pipeline/apply")
                        if err != nil {
@@ -67,5 +68,7 @@
        pipelineApplyCmd.Flags().StringArrayVar(&pipelineIds, "pipeline-ids", 
[]string{}, "Filter pipelines to apply by their IDs, accepted as a comma 
separated list")
        pipelineApplyCmd.Flags().StringArrayVar(&labels, "labels", []string{}, 
"Filter pipelines to apply by their labels, accepted as a comma separated list 
(key:value)")
 
+       addDisableChangelogFlag(pipelineApplyCmd, &disableChangelog)
+
        pipelineCmd.AddCommand(pipelineApplyCmd)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/pipeline_diff.go 
new/updatecli-0.118.0/cmd/pipeline_diff.go
--- old/updatecli-0.117.1/cmd/pipeline_diff.go  2026-05-29 09:14:42.000000000 
+0200
+++ new/updatecli-0.118.0/cmd/pipeline_diff.go  2026-06-02 14:32:06.000000000 
+0200
@@ -33,6 +33,7 @@
                        e.Options.Pipeline.Target.Push = false
                        e.Options.Pipeline.Target.Clean = diffClean
                        e.Options.Pipeline.Target.DryRun = true
+                       e.Options.Pipeline.DisableChangelog = disableChangelog
 
                        err = run("pipeline/diff")
                        if err != nil {
@@ -54,5 +55,7 @@
        pipelineDiffCmd.Flags().StringArrayVar(&pipelineIds, "pipeline-ids", 
[]string{}, "Filter pipelines to apply by their pipeline IDs, accepted a comma 
separated list")
        pipelineDiffCmd.Flags().StringArrayVar(&labels, "labels", []string{}, 
"Filter pipelines to apply by their labels, accepted as a comma separated list 
(key:value)")
 
+       addDisableChangelogFlag(pipelineDiffCmd, &disableChangelog)
+
        pipelineCmd.AddCommand(pipelineDiffCmd)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/root.go 
new/updatecli-0.118.0/cmd/root.go
--- old/updatecli-0.117.1/cmd/root.go   2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/cmd/root.go   2026-06-02 14:32:06.000000000 +0200
@@ -27,18 +27,20 @@
 )
 
 var (
-       pipelineIds      []string
-       labels           []string
-       manifestFiles    []string
-       valuesFiles      []string
-       valuesInline     []string
-       secretsFiles     []string
-       policyReferences []string
-       e                engine.Engine
-       verbose          bool
-       experimental     bool
-       disableTLS       bool
-       uniqueTmpDir     bool
+       pipelineIds         []string
+       labels              []string
+       manifestFiles       []string
+       valuesFiles         []string
+       valuesInline        []string
+       secretsFiles        []string
+       policyReferences    []string
+       e                   engine.Engine
+       verbose             bool
+       experimental        bool
+       disableTLS          bool
+       disableChangelog    bool
+       uniqueTmpDir        bool
+       disableVersionCheck bool
 
        rootCmd = &cobra.Command{
                Use:   "updatecli",
@@ -65,11 +67,31 @@
        }
 }
 
+// skipVersionCheckCommands lists commands where the version check is skipped
+// to avoid unnecessary network requests and prevent banner output from
+// corrupting generated content.
+var skipVersionCheckCommands = []string{
+       "completion",
+       "__complete",
+       "__completeNoDesc",
+       "docs",
+       "man",
+       "jsonschema",
+}
+
 func init() {
 
        logrus.SetOutput(os.Stdout)
 
        rootCmd.PersistentPostRun = func(cmd *cobra.Command, args []string) {
+               if disableVersionCheck {
+                       return
+               }
+               for c := cmd; c != nil; c = c.Parent() {
+                       if slices.Contains(skipVersionCheckCommands, c.Name()) {
+                               return
+                       }
+               }
                err := engine.CheckLatestPublishedVersion()
                if err != nil {
                        logrus.Debugf("Unable to check for the latest version 
of updatecli: %v", err)
@@ -79,6 +101,7 @@
        rootCmd.PersistentFlags().BoolVarP(&verbose, "debug", "", false, "Debug 
Output")
        rootCmd.PersistentFlags().BoolVarP(&experimental, "experimental", "", 
false, "Enable Experimental mode")
        rootCmd.PersistentFlags().BoolVar(&uniqueTmpDir, "unique-tmp-dir", 
false, "Use a unique temporary directory to allow running multiple Updatecli 
instances in parallel")
+       rootCmd.PersistentFlags().BoolVar(&disableVersionCheck, 
"disable-version-check", getEnvBoolOrDefault(DisableVersionCheckEnvVar, false), 
"Disable version check (env: "+DisableVersionCheckEnvVar+")")
        rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
                if verbose {
                        logrus.SetLevel(logrus.DebugLevel)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/cmd/root_test.go 
new/updatecli-0.118.0/cmd/root_test.go
--- old/updatecli-0.117.1/cmd/root_test.go      1970-01-01 01:00:00.000000000 
+0100
+++ new/updatecli-0.118.0/cmd/root_test.go      2026-06-02 14:32:06.000000000 
+0200
@@ -0,0 +1,132 @@
+package cmd
+
+import (
+       "strings"
+       "testing"
+
+       "github.com/spf13/cobra"
+)
+
+func TestDisableVersionCheckFlagRegistration(t *testing.T) {
+       t.Setenv(DisableVersionCheckEnvVar, "false")
+
+       flag := rootCmd.PersistentFlags().Lookup("disable-version-check")
+       if flag == nil {
+               t.Fatal("flag not registered")
+       }
+
+       if flag.Usage == "" {
+               t.Error("flag help text is empty")
+       }
+
+       if !strings.Contains(flag.Usage, DisableVersionCheckEnvVar) {
+               t.Errorf(
+                       "flag help text does not mention env var %q: help text 
is %q",
+                       DisableVersionCheckEnvVar,
+                       flag.Usage,
+               )
+       }
+}
+
+func TestDisableVersionCheckFlagUsesEnvDefault(t *testing.T) {
+       tests := []struct {
+               name        string
+               envValue    string
+               expectedDef string
+       }{
+               {
+                       name:        "env_var_true",
+                       envValue:    "true",
+                       expectedDef: "true",
+               },
+               {
+                       name:        "env_var_false",
+                       envValue:    "false",
+                       expectedDef: "false",
+               },
+               {
+                       name:        "env_var_1",
+                       envValue:    "1",
+                       expectedDef: "true",
+               },
+               {
+                       name:        "env_var_0",
+                       envValue:    "0",
+                       expectedDef: "false",
+               },
+       }
+
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       t.Setenv(DisableVersionCheckEnvVar, tt.envValue)
+
+                       cmd := &cobra.Command{Use: "test"}
+                       var val bool
+                       cmd.PersistentFlags().BoolVar(
+                               &val,
+                               "disable-version-check",
+                               getEnvBoolOrDefault(DisableVersionCheckEnvVar, 
false),
+                               "Disable version check",
+                       )
+
+                       flag := 
cmd.PersistentFlags().Lookup("disable-version-check")
+                       if flag == nil {
+                               t.Fatal("flag not registered")
+                       }
+
+                       if flag.DefValue != tt.expectedDef {
+                               t.Errorf(
+                                       "flag default value: got %q, expected 
%q",
+                                       flag.DefValue,
+                                       tt.expectedDef,
+                               )
+                       }
+               })
+       }
+}
+
+func TestDisableVersionCheckFlagOverridesEnv(t *testing.T) {
+       t.Setenv(DisableVersionCheckEnvVar, "true")
+
+       cmd := &cobra.Command{
+               Use: "test",
+               RunE: func(cmd *cobra.Command, args []string) error {
+                       return nil
+               },
+       }
+
+       var val bool
+       cmd.PersistentFlags().BoolVar(
+               &val,
+               "disable-version-check",
+               getEnvBoolOrDefault(DisableVersionCheckEnvVar, false),
+               "Disable version check",
+       )
+
+       cmd.SetArgs([]string{"--disable-version-check=false"})
+
+       err := cmd.Execute()
+       if err != nil {
+               t.Fatalf("unexpected error: %v", err)
+       }
+
+       if val {
+               t.Error("expected flag to override env var")
+       }
+}
+
+func TestSkipVersionCheckCommandsContainsExpectedCommands(t *testing.T) {
+       expected := []string{"completion", "__complete", "__completeNoDesc", 
"docs", "man", "jsonschema"}
+       for _, name := range expected {
+               found := false
+               for _, s := range skipVersionCheckCommands {
+                       if s == name {
+                               found = true
+                               break
+                       }
+               }
+               if !found {
+                       t.Errorf("skipVersionCheckCommands missing %q", name)
+               }
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/go.mod new/updatecli-0.118.0/go.mod
--- old/updatecli-0.117.1/go.mod        2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/go.mod        2026-06-02 14:32:06.000000000 +0200
@@ -42,13 +42,13 @@
        github.com/aws/aws-sdk-go-v2/service/ec2 v1.302.0
        github.com/aws/smithy-go v1.25.1
        github.com/beevik/etree v1.6.0
-       github.com/drone/go-scm v1.42.2
+       github.com/drone/go-scm v1.42.3
        github.com/extism/go-sdk v1.7.1
-       github.com/fluxcd/helm-controller/api v1.5.4
-       github.com/fluxcd/source-controller/api v1.8.4
+       github.com/fluxcd/helm-controller/api v1.5.5
+       github.com/fluxcd/source-controller/api v1.8.5
        github.com/go-viper/mapstructure/v2 v2.5.0
        github.com/goccy/go-yaml v1.19.2
-       github.com/google/go-containerregistry v0.21.5
+       github.com/google/go-containerregistry v0.21.6
        github.com/google/go-github/v69 v69.2.0
        github.com/goware/urlx v0.3.2
        github.com/hashicorp/hcl/v2 v2.24.0
@@ -65,7 +65,7 @@
        github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
        github.com/spf13/afero v1.15.0
        github.com/testcontainers/testcontainers-go v0.42.0
-       github.com/tetratelabs/wazero v1.11.0
+       github.com/tetratelabs/wazero v1.12.0
        github.com/tomwright/dasel v1.27.3
        github.com/tomwright/dasel/v2 v2.8.1
        github.com/vmware-labs/yaml-jsonpath v0.3.2
@@ -142,7 +142,6 @@
        github.com/containerd/errdefs/pkg v0.3.0 // indirect
        github.com/containerd/log v0.1.0 // indirect
        github.com/containerd/platforms v1.0.0-rc.2 // indirect
-       github.com/containerd/stargz-snapshotter/estargz v0.18.2 // indirect
        github.com/containerd/typeurl/v2 v2.2.3 // indirect
        github.com/cpuguy83/dockercfg v0.3.2 // indirect
        github.com/davidmz/go-pageant v1.0.2 // indirect
@@ -210,7 +209,6 @@
        github.com/tklauser/go-sysconf v0.3.16 // indirect
        github.com/tklauser/numcpus v0.11.0 // indirect
        github.com/urfave/cli v1.22.17 // indirect
-       github.com/vbatts/tar-split v0.12.2 // indirect
        github.com/x448/float16 v0.8.4 // indirect
        github.com/yusufpapurcu/wmi v1.2.4 // indirect
        go.mongodb.org/mongo-driver v1.17.9 // indirect
@@ -341,7 +339,7 @@
        golang.org/x/sync v0.20.0 // indirect
        golang.org/x/sys v0.44.0 // indirect
        golang.org/x/term v0.43.0 // indirect
-       golang.org/x/tools v0.44.0 // indirect
+       golang.org/x/tools v0.45.0 // indirect
        google.golang.org/api v0.278.0 // indirect
        google.golang.org/grpc v1.81.0 // indirect
        google.golang.org/protobuf v1.36.11 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/go.sum new/updatecli-0.118.0/go.sum
--- old/updatecli-0.117.1/go.sum        2026-05-29 09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/go.sum        2026-06-02 14:32:06.000000000 +0200
@@ -213,8 +213,6 @@
 github.com/containerd/log v0.1.0/go.mod 
h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
 github.com/containerd/platforms v1.0.0-rc.2 
h1:0SPgaNZPVWGEi4grZdV8VRYQn78y+nm6acgLGv/QzE4=
 github.com/containerd/platforms v1.0.0-rc.2/go.mod 
h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4=
-github.com/containerd/stargz-snapshotter/estargz v0.18.2 
h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw=
-github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod 
h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY=
 github.com/containerd/typeurl/v2 v2.2.3 
h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40=
 github.com/containerd/typeurl/v2 v2.2.3/go.mod 
h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk=
 github.com/coreos/go-systemd/v22 v22.7.0 
h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=
@@ -257,8 +255,8 @@
 github.com/docker/go-metrics v0.0.1/go.mod 
h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
 github.com/docker/go-units v0.5.0 
h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
 github.com/docker/go-units v0.5.0/go.mod 
h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/drone/go-scm v1.42.2 h1:BG25sI9L4Dw8QDxdSEfDaEho2upy4jULDXLFCbAIrOM=
-github.com/drone/go-scm v1.42.2/go.mod 
h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
+github.com/drone/go-scm v1.42.3 h1:i16M9yKKjXSWz2pVCxxmJ9yvew1WbT/uM6bSOAWm47M=
+github.com/drone/go-scm v1.42.3/go.mod 
h1:DFIJJjhMj0TSXPz+0ni4nyZ9gtTtC40Vh/TGRugtyWw=
 github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a 
h1:UwSIFv5g5lIvbGgtf3tVwC7Ky9rmMFBp0RMs+6f6YqE=
 github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a/go.mod 
h1:C8DzXehI4zAbrdlbtOByKX6pfivJTBiV9Jjqv56Yd9Q=
 github.com/ebitengine/purego v0.10.0 
h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU=
@@ -293,16 +291,16 @@
 github.com/fatih/color v1.19.0/go.mod 
h1:zNk67I0ZUT1bEGsSGyCZYZNrHuTkJJB+r6Q9VuMi0LE=
 github.com/felixge/httpsnoop v1.0.4 
h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
 github.com/felixge/httpsnoop v1.0.4/go.mod 
h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/fluxcd/helm-controller/api v1.5.4 
h1:wbAwD+cSGBZEhT3qq1naBKkitdNbqRtWQUFNA3XTXOc=
-github.com/fluxcd/helm-controller/api v1.5.4/go.mod 
h1:lTgeUmtVYExMKp7mRDncsr4JwHTz3LFtLjRJZeR98lI=
+github.com/fluxcd/helm-controller/api v1.5.5 
h1:xQA/9gbifMvZPGhSNKHsrkq829dI/yTBASVdYp9/s4Y=
+github.com/fluxcd/helm-controller/api v1.5.5/go.mod 
h1:lTgeUmtVYExMKp7mRDncsr4JwHTz3LFtLjRJZeR98lI=
 github.com/fluxcd/pkg/apis/acl v0.9.0 
h1:wBpgsKT+jcyZEcM//OmZr9RiF8klL3ebrDp2u2ThsnA=
 github.com/fluxcd/pkg/apis/acl v0.9.0/go.mod 
h1:TttNS+gocsGLwnvmgVi3/Yscwqrjc17+vhgYfqkfrV4=
 github.com/fluxcd/pkg/apis/kustomize v1.15.1 
h1:t9QZh+3ZS8EKmlxrnnbcKZcGTrg8FDvMF1T8BHMCuqI=
 github.com/fluxcd/pkg/apis/kustomize v1.15.1/go.mod 
h1:IZOy4CCtR/hxMGb7erK1RfbGnczVv4/dRBoVD37AywI=
 github.com/fluxcd/pkg/apis/meta v1.25.1 
h1:WG1GIC/SOz0GjxT0uVuO6AMicQ3yFsk6bDozCnq+fto=
 github.com/fluxcd/pkg/apis/meta v1.25.1/go.mod 
h1:c7o6mJGLCMvNrfdinGZehkrdZuFT9vZdZNrn66DtVD0=
-github.com/fluxcd/source-controller/api v1.8.4 
h1:ZJIh7OFhjxZgsD81ahxxbu3ggA7qySIjKWbK5+PKmOI=
-github.com/fluxcd/source-controller/api v1.8.4/go.mod 
h1:sio4t49RDx+S1etHRFAEEw8qfVuw0KKlOg8bRVlEYPM=
+github.com/fluxcd/source-controller/api v1.8.5 
h1:mLKc9YVMk46JCt1BQbkG6irkrpBZp95kiXh2+GYB6KQ=
+github.com/fluxcd/source-controller/api v1.8.5/go.mod 
h1:sio4t49RDx+S1etHRFAEEw8qfVuw0KKlOg8bRVlEYPM=
 github.com/foxcpp/go-mockdns v1.2.0 
h1:omK3OrHRD1IWJz1FuFBCFquhXslXoF17OvBS6JPzZF0=
 github.com/foxcpp/go-mockdns v1.2.0/go.mod 
h1:IhLeSFGed3mJIAXPH2aiRQB+kqz7oqu8ld2qVbOu7Wk=
 github.com/frankban/quicktest v1.14.6 
h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
@@ -425,8 +423,8 @@
 github.com/google/go-cmp v0.6.0/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
 github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
-github.com/google/go-containerregistry v0.21.5 
h1:KTJG9Pn/jC0VdZR6ctV3/jcN+q6/Iqlx0sTVz3ywZlM=
-github.com/google/go-containerregistry v0.21.5/go.mod 
h1:ySvMuiWg+dOsRW0Hw8GYwfMwBlNRTmpYBFJPlkco5zU=
+github.com/google/go-containerregistry v0.21.6 
h1:T+yqQIlJXKrM98Om4DlW3GoWQAmhZuLMwoDOvVrtiUM=
+github.com/google/go-containerregistry v0.21.6/go.mod 
h1:U7MMSBIJynke2MVQrQk19NP9k/uQsGz/h0amIFSHMbo=
 github.com/google/go-github/v69 v69.2.0 
h1:wR+Wi/fN2zdUx9YxSmYE0ktiX9IAR/BeePzeaUUbEHE=
 github.com/google/go-github/v69 v69.2.0/go.mod 
h1:xne4jymxLR6Uj9b7J7PyTpkMYstEMMwGZa0Aehh1azM=
 github.com/google/go-querystring v1.2.0 
h1:yhqkPbu2/OH+V9BfpCVPZkNmUXhb2gBxJArfhIxNtP0=
@@ -762,8 +760,8 @@
 github.com/testcontainers/testcontainers-go v0.42.0/go.mod 
h1:vZjdY1YmUA1qEForxOIOazfsrdyORJAbhi0bp8plN30=
 github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834 
h1:ZF+QBjOI+tILZjBaFj3HgFonKXUcwgJ4djLb6i42S3Q=
 github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834/go.mod 
h1:m9ymHTgNSEjuxvw8E7WWe4Pl4hZQHXONY8wE6dMLaRk=
-github.com/tetratelabs/wazero v1.11.0 
h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA=
-github.com/tetratelabs/wazero v1.11.0/go.mod 
h1:eV28rsN8Q+xwjogd7f4/Pp4xFxO7uOGbLcD/LzB1wiU=
+github.com/tetratelabs/wazero v1.12.0 
h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
+github.com/tetratelabs/wazero v1.12.0/go.mod 
h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
 github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
 github.com/tjfoc/gmsm v1.4.1/go.mod 
h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
 github.com/tklauser/go-sysconf v0.3.16 
h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA=
@@ -776,8 +774,6 @@
 github.com/tomwright/dasel/v2 v2.8.1/go.mod 
h1:6bNDNAnmGEtGpuIvksuQwiNcAgQ87pmzndynsqTNglc=
 github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ=
 github.com/urfave/cli v1.22.17/go.mod 
h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo=
-github.com/vbatts/tar-split v0.12.2 
h1:w/Y6tjxpeiFMR47yzZPlPj/FcPLpXbTUi/9H7d3CPa4=
-github.com/vbatts/tar-split v0.12.2/go.mod 
h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod 
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/xanzy/ssh-agent v0.3.3 
h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
@@ -987,8 +983,8 @@
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/tools v0.6.0/go.mod 
h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
-golang.org/x/tools v0.44.0/go.mod 
h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
+golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8=
+golang.org/x/tools v0.45.0/go.mod 
h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/pkg/core/engine/version.go 
new/updatecli-0.118.0/pkg/core/engine/version.go
--- old/updatecli-0.117.1/pkg/core/engine/version.go    2026-05-29 
09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/pkg/core/engine/version.go    2026-06-02 
14:32:06.000000000 +0200
@@ -4,9 +4,9 @@
        "encoding/json"
        "fmt"
        "io"
-       "strings"
        "time"
 
+       "github.com/Masterminds/semver/v3"
        "github.com/sirupsen/logrus"
        "github.com/updatecli/updatecli/pkg/core/httpclient"
        "github.com/updatecli/updatecli/pkg/core/version"
@@ -52,23 +52,28 @@
                return fmt.Errorf("unable to parse the latest version of 
updatecli: %v", err)
        }
 
-       sanitizeVersion := func(v string) string {
-               s := strings.TrimSpace(v)
-               s = strings.TrimPrefix(s, "v")
+       // Mean that we are using a development version of updatecli, so we 
can't compare it with the latest version available
+       if version.Version == "" {
+               return nil
+       }
 
-               return s
+       currentVersion, err := semver.NewVersion(version.Version)
+       if err != nil {
+               logrus.Warnf("unable to parse the current version of updatecli: 
%v", err)
+               return nil
        }
 
-       if sanitizeVersion(data.Latest.Tag) == sanitizeVersion(version.Version) 
{
+       latestVersion, err := semver.NewVersion(data.Latest.Tag)
+       if err != nil {
+               logrus.Warnf("unable to parse the latest version of updatecli: 
%v", err)
                return nil
        }
 
-       currentVersion := version.Version
-       if currentVersion == "" {
-               currentVersion = "unknown"
+       if currentVersion.GreaterThanEqual(latestVersion) {
+               return nil
        }
 
-       logrus.Infof("| A new release is available: %q -> %q", currentVersion, 
data.Latest.Tag)
+       logrus.Infof("| A new release is available: %q -> %q", 
currentVersion.String(), latestVersion.String())
        logrus.Infof("| More information on 
https://www.updatecli.io/changelogs/updatecli/changelogs/%s/";, data.Latest.Tag)
 
        return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/pkg/core/pipeline/options.go 
new/updatecli-0.118.0/pkg/core/pipeline/options.go
--- old/updatecli-0.117.1/pkg/core/pipeline/options.go  2026-05-29 
09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/pkg/core/pipeline/options.go  2026-06-02 
14:32:06.000000000 +0200
@@ -8,4 +8,6 @@
 
 type Options struct {
        Target target.Options
+       // DisableChangelog disables changelog retrieval for targets.
+       DisableChangelog bool
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/pkg/core/pipeline/targets.go 
new/updatecli-0.118.0/pkg/core/pipeline/targets.go
--- old/updatecli-0.117.1/pkg/core/pipeline/targets.go  2026-05-29 
09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/pkg/core/pipeline/targets.go  2026-06-02 
14:32:06.000000000 +0200
@@ -36,36 +36,38 @@
                err = fmt.Errorf("%s", err)
        }
 
-       changelogSourceID := target.Config.SourceID
-       if changelogSourceID == "" {
-               switch len(sourceIds) {
-               case 1:
-                       changelogSourceID = sourceIds[0]
-               case 0:
-               // If we have more than one sourceID then we can't define in a 
reliable way which one to use
-               // as the order of the sourceIDs is not guaranteed.
-               default:
-                       logrus.Debugf("Target depends on a too many sources 
that we can't determine which one to use for the changelog")
+       if !p.Options.DisableChangelog {
+               changelogSourceID := target.Config.SourceID
+               if changelogSourceID == "" {
+                       switch len(sourceIds) {
+                       case 1:
+                               changelogSourceID = sourceIds[0]
+                       case 0:
+                       // If we have more than one sourceID then we can't 
define in a reliable way which one to use
+                       // as the order of the sourceIDs is not guaranteed.
+                       default:
+                               logrus.Debugf("Target depends on a too many 
sources that we can't determine which one to use for the changelog")
+                       }
                }
-       }
 
-       if changelogSourceID != "" {
-               // Once the source is executed, then it can retrieve its 
changelog
-               // Any error means an empty changelog
-               if source, found := p.Sources[changelogSourceID]; found {
-                       c, err := resource.New(source.Config.ResourceConfig)
+               if changelogSourceID != "" {
+                       // Once the source is executed, then it can retrieve 
its changelog
+                       // Any error means an empty changelog
+                       if source, found := p.Sources[changelogSourceID]; found 
{
+                               c, err := 
resource.New(source.Config.ResourceConfig)
 
-                       if err == nil {
+                               if err == nil {
 
-                               changelogs := 
c.Changelog(target.Result.Information, source.OriginalOutput)
+                                       changelogs := 
c.Changelog(target.Result.Information, source.OriginalOutput)
 
-                               if changelogs != nil {
-                                       target.Result.Changelogs = *changelogs
+                                       if changelogs != nil {
+                                               target.Result.Changelogs = 
*changelogs
 
-                                       logrus.Debugf("%s", changelogs.String())
+                                               logrus.Debugf("%s", 
changelogs.String())
 
-                               } else {
-                                       logrus.Debugln("no changelog detected")
+                                       } else {
+                                               logrus.Debugln("no changelog 
detected")
+                                       }
                                }
                        }
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/updatecli-0.117.1/pkg/core/pipeline/targets_test.go 
new/updatecli-0.118.0/pkg/core/pipeline/targets_test.go
--- old/updatecli-0.117.1/pkg/core/pipeline/targets_test.go     2026-05-29 
09:14:42.000000000 +0200
+++ new/updatecli-0.118.0/pkg/core/pipeline/targets_test.go     2026-06-02 
14:32:06.000000000 +0200
@@ -8,9 +8,12 @@
        "github.com/updatecli/updatecli/pkg/core/config"
        "github.com/updatecli/updatecli/pkg/core/pipeline/condition"
        "github.com/updatecli/updatecli/pkg/core/pipeline/resource"
+       "github.com/updatecli/updatecli/pkg/core/pipeline/source"
        "github.com/updatecli/updatecli/pkg/core/pipeline/target"
+       "github.com/updatecli/updatecli/pkg/core/result"
        "github.com/updatecli/updatecli/pkg/plugins/resources/shell"
        
"github.com/updatecli/updatecli/pkg/plugins/resources/shell/success/exitcode"
+       updateclihttp 
"github.com/updatecli/updatecli/pkg/plugins/resources/updateclihttp"
 )
 
 func TestRunTarget(t *testing.T) {
@@ -473,3 +476,53 @@
        }
 
 }
+
+func TestRunTarget_DisableChangelogSkipsChangelog(t *testing.T) {
+       p := Pipeline{
+               Config: &config.Config{
+                       Spec: config.Spec{
+                               Targets: map[string]target.Config{
+                                       "test": {
+                                               ResourceConfig: 
resource.ResourceConfig{
+                                                       Kind: "shell",
+                                                       Name: "test",
+                                                       Spec: shell.Spec{
+                                                               Command: "true",
+                                                               ChangedIf: 
shell.SpecChangedIf{
+                                                                       Kind: 
"exitcode",
+                                                                       Spec: 
exitcode.Spec{Warning: 1, Success: 0, Failure: 2},
+                                                               },
+                                                       },
+                                               },
+                                               SourceID: "source1",
+                                       },
+                               },
+                       },
+               },
+               Sources: map[string]source.Source{
+                       "source1": {
+                               Config: source.Config{
+                                       ResourceConfig: resource.ResourceConfig{
+                                               Kind: "http",
+                                               Name: "source1",
+                                               Spec: updateclihttp.Spec{Url: 
"https://example.com"},
+                                       },
+                               },
+                               Output:         "old-value",
+                               OriginalOutput: "old-value",
+                               Result:         &result.Source{Information: 
"old-value", Result: result.SUCCESS},
+                       },
+               },
+               Targets: map[string]target.Target{
+                       "test": {
+                               Result: &result.Target{},
+                       },
+               },
+       }
+
+       p.Options.DisableChangelog = true
+
+       _, _, err := p.RunTarget(context.Background(), "test", 
[]string{"source1"})
+       require.NoError(t, err)
+       require.Empty(t, p.Targets["test"].Result.Changelogs)
+}

++++++ updatecli.obsinfo ++++++
--- /var/tmp/diff_new_pack.G6H5qM/_old  2026-06-03 20:28:40.888786861 +0200
+++ /var/tmp/diff_new_pack.G6H5qM/_new  2026-06-03 20:28:40.920788186 +0200
@@ -1,5 +1,5 @@
 name: updatecli
-version: 0.117.1
-mtime: 1780038882
-commit: cdcf7cca0ce55eff8bfcb7ab1108f2e34c7518a7
+version: 0.118.0
+mtime: 1780403526
+commit: 786ba9fbb8374d9c23e18b062f29ac1a95fd2b3c
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/updatecli/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.updatecli.new.1937/vendor.tar.gz differ: char 13, 
line 1

Reply via email to