Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package werf for openSUSE:Factory checked in 
at 2025-05-01 15:23:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/werf (Old)
 and      /work/SRC/openSUSE:Factory/.werf.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "werf"

Thu May  1 15:23:04 2025 rev:47 rq:1273750 version:2.35.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/werf/werf.changes        2025-04-29 
16:42:20.435130004 +0200
+++ /work/SRC/openSUSE:Factory/.werf.new.30101/werf.changes     2025-05-01 
15:23:22.334897744 +0200
@@ -1,0 +2,19 @@
+Wed Apr 30 21:19:26 UTC 2025 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- Update to version 2.35.7:
+  * Bug Fixes
+    - deploy: label/annotation separator options have no effect
+      (c9e2eff)
+    - export: align label separator default (comma) with other
+      commands (c04db26)
+
+-------------------------------------------------------------------
+Wed Apr 30 21:11:49 UTC 2025 - Johannes Kastl 
<opensuse_buildserv...@ojkastl.de>
+
+- Update to version 2.35.6:
+  * Bug Fixes
+    - bundle: incorrect parsing of image reference with colon in
+      tag (ba851eb)
+    - deploy: improve log color detection (c113429)
+
+-------------------------------------------------------------------

Old:
----
  werf-2.35.5.obscpio

New:
----
  werf-2.35.7.obscpio

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

Other differences:
------------------
++++++ werf.spec ++++++
--- /var/tmp/diff_new_pack.7DrHbL/_old  2025-05-01 15:23:23.034927078 +0200
+++ /var/tmp/diff_new_pack.7DrHbL/_new  2025-05-01 15:23:23.038927245 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           werf
-Version:        2.35.5
+Version:        2.35.7
 Release:        0
 Summary:        CLI for the Werf CI/CD system
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.7DrHbL/_old  2025-05-01 15:23:23.110930262 +0200
+++ /var/tmp/diff_new_pack.7DrHbL/_new  2025-05-01 15:23:23.118930598 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/werf/werf</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v2.35.5</param>
+    <param name="revision">v2.35.7</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.7DrHbL/_old  2025-05-01 15:23:23.146931771 +0200
+++ /var/tmp/diff_new_pack.7DrHbL/_new  2025-05-01 15:23:23.150931938 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/werf/werf</param>
-              <param 
name="changesrevision">b33c397d6bf194cdde382f3c98adebe62ef67e36</param></service></servicedata>
+              <param 
name="changesrevision">346c06575907254603ada1598ea117cbfb1514d9</param></service></servicedata>
 (No newline at EOF)
 

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

++++++ werf-2.35.5.obscpio -> werf-2.35.7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/CHANGELOG.md new/werf-2.35.7/CHANGELOG.md
--- old/werf-2.35.5/CHANGELOG.md        2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/CHANGELOG.md        2025-04-30 16:31:11.000000000 +0200
@@ -1,5 +1,21 @@
 # Changelog
 
+### [2.35.7](https://www.github.com/werf/werf/compare/v2.35.6...v2.35.7) 
(2025-04-30)
+
+
+### Bug Fixes
+
+* **deploy:** label/annotation separator options have no effect 
([c9e2eff](https://www.github.com/werf/werf/commit/c9e2eff208f19950a2557e540240eb0a94e8bd93))
+* **export:** align label separator default (comma) with other commands 
([c04db26](https://www.github.com/werf/werf/commit/c04db264e96f37d9588dc6f26f3b86c2927f445a))
+
+### [2.35.6](https://www.github.com/werf/werf/compare/v2.35.5...v2.35.6) 
(2025-04-30)
+
+
+### Bug Fixes
+
+* **bundle:** incorrect parsing of image reference with colon in tag 
([ba851eb](https://www.github.com/werf/werf/commit/ba851ebe26cfb3572f627515a0eebddcf931b9fe))
+* **deploy:** improve log color detection 
([c113429](https://www.github.com/werf/werf/commit/c113429c5cc7e9f5282ca5983be675fb067e3c61))
+
 ### [2.35.5](https://www.github.com/werf/werf/compare/v2.35.4...v2.35.5) 
(2025-04-25)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/bundle/apply/apply.go 
new/werf-2.35.7/cmd/werf/bundle/apply/apply.go
--- old/werf-2.35.5/cmd/werf/bundle/apply/apply.go      2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/bundle/apply/apply.go      2025-04-30 
16:31:11.000000000 +0200
@@ -210,7 +210,7 @@
 
        chart.CurrentChartType = chart.ChartTypeBundle
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseInstallLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseInstallLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.ReleaseInstall(ctx, releaseName, releaseNamespace, 
action.ReleaseInstallOptions{
                AutoRollback:                 cmdData.AutoRollback,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/bundle/render/render.go 
new/werf-2.35.7/cmd/werf/bundle/render/render.go
--- old/werf-2.35.5/cmd/werf/bundle/render/render.go    2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/bundle/render/render.go    2025-04-30 
16:31:11.000000000 +0200
@@ -214,7 +214,9 @@
 
        chart.CurrentChartType = chart.ChartTypeBundle
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultChartRenderLogLevel, *commonCmdData.LogColorMode)
+       // TODO(v3): get rid of forcing color mode via ci-env and use color 
mode detection logic from
+       // Nelm instead. Until then, color will be always off here.
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultChartRenderLogLevel, action.LogColorModeOff, true)
 
        if err := action.ChartRender(ctx, action.ChartRenderOptions{
                ChartDirPath:                 bundlePath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/common/common.go 
new/werf-2.35.7/cmd/werf/common/common.go
--- old/werf-2.35.5/cmd/werf/common/common.go   2025-04-28 10:49:52.000000000 
+0200
+++ new/werf-2.35.7/cmd/werf/common/common.go   2025-04-30 16:31:11.000000000 
+0200
@@ -414,40 +414,38 @@
 
 func SetupAddAnnotations(cmdData *CmdData, cmd *cobra.Command) {
        cmdData.AddAnnotations = new([]string)
-       cmd.Flags().StringArrayVarP(cmdData.AddAnnotations, "add-annotation", 
"", []string{}, `Add annotation to deploying resources (can specify multiple).
-Format: annoName=annoValue[<separator>annoName=annoValue ...]. The default 
separator is a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
-Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g. 
$WERF_ADD_ANNOTATION_1=annoName1=annoValue1, 
$WERF_ADD_ANNOTATION_2=annoName2=annoValue2)`)
+       cmd.Flags().StringArrayVarP(cmdData.AddAnnotations, "add-annotation", 
"", []string{}, fmt.Sprintf(`Add annotation to deploying resources (can specify 
multiple).
+Format: annoName=annoValue[<separator>annoName=annoValue ...]. The default 
separator is %q, but it can be customized using the --add-annotation-separator 
flag.
+Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g. 
$WERF_ADD_ANNOTATION_1=annoName1=annoValue1, 
$WERF_ADD_ANNOTATION_2=annoName2=annoValue2)`, DefaultPairSeparator))
 }
 
-const DefaultAnnoAndLabelPairSeparator = "\n"
-
 func SetupAddAnnotationSeparator(cmdData *CmdData, cmd *cobra.Command) {
        cmdData.AddAnnotationSeparator = new(string)
 
-       defaultValue := DefaultAnnoAndLabelPairSeparator
+       defaultValue := DefaultPairSeparator
        if os.Getenv("WERF_ADD_ANNOTATION_SEPARATOR") != "" {
                defaultValue = os.Getenv("WERF_ADD_ANNOTATION_SEPARATOR")
        }
 
-       cmd.Flags().StringVarP(cmdData.AddAnnotationSeparator, 
"add-annotation-separator", "", defaultValue, `Separator for --add-annotation 
values (default $WERF_ADD_ANNOTATION_SEPARATOR or "\n")`)
+       cmd.Flags().StringVarP(cmdData.AddAnnotationSeparator, 
"add-annotation-separator", "", defaultValue, fmt.Sprintf(`Separator for 
--add-annotation values (default $WERF_ADD_ANNOTATION_SEPARATOR or %q)`, 
DefaultPairSeparator))
 }
 
 func SetupAddLabels(cmdData *CmdData, cmd *cobra.Command) {
        cmdData.AddLabels = new([]string)
-       cmd.Flags().StringArrayVarP(cmdData.AddLabels, "add-label", "", 
[]string{}, `Add label to deploying resources (can specify multiple).
-Format: labelName=labelValue[<separator>labelName=labelValue ...]. The default 
separator is a newline ("\n"), but it can be customized using the 
--add-label-separator flag.
-Also, can be specified with $WERF_ADD_LABEL_* (e.g. 
$WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)`)
+       cmd.Flags().StringArrayVarP(cmdData.AddLabels, "add-label", "", 
[]string{}, fmt.Sprintf(`Add label to deploying resources (can specify 
multiple).
+Format: labelName=labelValue[<separator>labelName=labelValue ...]. The default 
separator is %q, but it can be customized using the --add-label-separator flag.
+Also, can be specified with $WERF_ADD_LABEL_* (e.g. 
$WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)`, DefaultPairSeparator))
 }
 
 func SetupAddLabelSeparator(cmdData *CmdData, cmd *cobra.Command) {
        cmdData.AddLabelSeparator = new(string)
 
-       defaultValue := DefaultAnnoAndLabelPairSeparator
+       defaultValue := DefaultPairSeparator
        if os.Getenv("WERF_ADD_LABEL_SEPARATOR") != "" {
                defaultValue = os.Getenv("WERF_ADD_LABEL_SEPARATOR")
        }
 
-       cmd.Flags().StringVarP(cmdData.AddLabelSeparator, 
"add-label-separator", "", defaultValue, `Separator for --add-label values 
(default $WERF_ADD_LABEL_SEPARATOR or "\n")`)
+       cmd.Flags().StringVarP(cmdData.AddLabelSeparator, 
"add-label-separator", "", defaultValue, fmt.Sprintf(`Separator for --add-label 
values (default $WERF_ADD_LABEL_SEPARATOR or %q)`, DefaultPairSeparator))
 }
 
 func SetupKubeContext(cmdData *CmdData, cmd *cobra.Command) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/common/deploy_params.go 
new/werf-2.35.7/cmd/werf/common/deploy_params.go
--- old/werf-2.35.5/cmd/werf/common/deploy_params.go    2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/common/deploy_params.go    2025-04-30 
16:31:11.000000000 +0200
@@ -13,7 +13,7 @@
 )
 
 func GetUserExtraAnnotations(cmdData *CmdData) (map[string]string, error) {
-       result, err := InputArrayToKeyValueMap(GetAddAnnotations(cmdData), ",", 
DefaultKeyValueSeparator)
+       result, err := InputArrayToKeyValueMap(GetAddAnnotations(cmdData), 
*cmdData.AddAnnotationSeparator, DefaultKeyValueSeparator)
        if err != nil {
                return nil, fmt.Errorf("unsupported --add-annotation value: 
%w", err)
        }
@@ -22,7 +22,7 @@
 }
 
 func GetUserExtraLabels(cmdData *CmdData) (map[string]string, error) {
-       result, err := InputArrayToKeyValueMap(GetAddLabels(cmdData), ",", 
DefaultKeyValueSeparator)
+       result, err := InputArrayToKeyValueMap(GetAddLabels(cmdData), 
*cmdData.AddLabelSeparator, DefaultKeyValueSeparator)
        if err != nil {
                return nil, fmt.Errorf("unsupported --add-label value: %w", err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/converge/converge.go 
new/werf-2.35.7/cmd/werf/converge/converge.go
--- old/werf-2.35.5/cmd/werf/converge/converge.go       2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/converge/converge.go       2025-04-30 
16:31:11.000000000 +0200
@@ -433,7 +433,7 @@
 
        loader.ChartFileReader = giterminismManager.FileReader()
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseInstallLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseInstallLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.ReleaseInstall(ctx, releaseName, releaseNamespace, 
action.ReleaseInstallOptions{
                AutoRollback:                 cmdData.AutoRollback,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/dismiss/dismiss.go 
new/werf-2.35.7/cmd/werf/dismiss/dismiss.go
--- old/werf-2.35.5/cmd/werf/dismiss/dismiss.go 2025-04-28 10:49:52.000000000 
+0200
+++ new/werf-2.35.7/cmd/werf/dismiss/dismiss.go 2025-04-30 16:31:11.000000000 
+0200
@@ -170,7 +170,7 @@
                return fmt.Errorf("get release name and namespace: %w", err)
        }
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseUninstallLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleaseUninstallLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.ReleaseUninstall(ctx, releaseName, releaseNamespace, 
action.ReleaseUninstallOptions{
                NoDeleteHooks:              !cmdData.WithHooks,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/export/export.go 
new/werf-2.35.7/cmd/werf/export/export.go
--- old/werf-2.35.5/cmd/werf/export/export.go   2025-04-28 10:49:52.000000000 
+0200
+++ new/werf-2.35.7/cmd/werf/export/export.go   2025-04-30 16:31:11.000000000 
+0200
@@ -128,16 +128,16 @@
        cmd.Flags().StringArrayVarP(&tagTemplateList, "tag", "", []string{}, 
`Set a tag template (can specify multiple).
 It is necessary to use image name shortcut %image% or %image_slug% if multiple 
images are exported (e.g. REPO:TAG-%image% or REPO-%image%:TAG)`)
 
-       cmd.Flags().StringArrayVarP(&addLabelArray, "add-label", "", 
[]string{}, `Add label to exported images (can specify multiple).
-Format: labelName=labelValue[<separator>labelName=labelValue ...]. The default 
separator is a newline ("\n"), but it can be customized using the 
--add-label-separator flag.
-Also, can be specified with $WERF_EXPORT_ADD_LABEL_* (e.g. 
$WERF_EXPORT_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_EXPORT_ADD_LABEL_2=labelName2=labelValue2)`)
+       cmd.Flags().StringArrayVarP(&addLabelArray, "add-label", "", 
[]string{}, fmt.Sprintf(`Add label to exported images (can specify multiple).
+Format: labelName=labelValue[<separator>labelName=labelValue ...]. The default 
separator is a newline %q, but it can be customized using the 
--add-label-separator flag.
+Also, can be specified with $WERF_EXPORT_ADD_LABEL_* (e.g. 
$WERF_EXPORT_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_EXPORT_ADD_LABEL_2=labelName2=labelValue2)`, common.DefaultPairSeparator))
 
-       defaultValue := common.DefaultAnnoAndLabelPairSeparator
+       defaultValue := common.DefaultPairSeparator
        if os.Getenv("WERF_EXPORT_ADD_LABEL_SEPARATOR") != "" {
                defaultValue = os.Getenv("WERF_EXPORT_ADD_LABEL_SEPARATOR")
        }
 
-       cmd.Flags().StringVarP(&addLabelSeparator, "add-label-separator", "", 
defaultValue, `Separator for --add-label values (default 
$WERF_EXPORT_ADD_LABEL_SEPARATOR or "\n")`)
+       cmd.Flags().StringVarP(&addLabelSeparator, "add-label-separator", "", 
defaultValue, fmt.Sprintf(`Separator for --add-label values (default 
$WERF_EXPORT_ADD_LABEL_SEPARATOR or %q)`, common.DefaultPairSeparator))
 
        commonCmdData.SetupSkipImageSpecStage(cmd)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/file/decrypt/decrypt.go 
new/werf-2.35.7/cmd/werf/helm/secret/file/decrypt/decrypt.go
--- old/werf-2.35.5/cmd/werf/helm/secret/file/decrypt/decrypt.go        
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/file/decrypt/decrypt.go        
2025-04-30 16:31:11.000000000 +0200
@@ -94,7 +94,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileDecryptLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileDecryptLogLevel, *commonCmdData.LogColorMode, true)
 
        if err := action.SecretFileDecrypt(ctx, filePath, 
action.SecretFileDecryptOptions{
                OutputFilePath: CmdData.OutputFilePath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/helm/secret/file/edit/edit.go 
new/werf-2.35.7/cmd/werf/helm/secret/file/edit/edit.go
--- old/werf-2.35.5/cmd/werf/helm/secret/file/edit/edit.go      2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/file/edit/edit.go      2025-04-30 
16:31:11.000000000 +0200
@@ -72,7 +72,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileEditLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileEditLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.SecretFileEdit(ctx, filePath, 
action.SecretFileEditOptions{
                SecretWorkDir: workingDir,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/file/encrypt/encrypt.go 
new/werf-2.35.7/cmd/werf/helm/secret/file/encrypt/encrypt.go
--- old/werf-2.35.5/cmd/werf/helm/secret/file/encrypt/encrypt.go        
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/file/encrypt/encrypt.go        
2025-04-30 16:31:11.000000000 +0200
@@ -90,7 +90,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileEncryptLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretFileEncryptLogLevel, *commonCmdData.LogColorMode, true)
 
        if err := action.SecretFileEncrypt(ctx, filePath, 
action.SecretFileEncryptOptions{
                OutputFilePath: cmdData.OutputFilePath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/generate_secret_key/generate_secret_key.go 
new/werf-2.35.7/cmd/werf/helm/secret/generate_secret_key/generate_secret_key.go
--- 
old/werf-2.35.5/cmd/werf/helm/secret/generate_secret_key/generate_secret_key.go 
    2025-04-28 10:49:52.000000000 +0200
+++ 
new/werf-2.35.7/cmd/werf/helm/secret/generate_secret_key/generate_secret_key.go 
    2025-04-30 16:31:11.000000000 +0200
@@ -34,7 +34,7 @@
                                return err
                        }
 
-                       ctx = action.SetupLogging(ctx, 
common.GetNelmLogLevel(&commonCmdData), action.DefaultSecretKeyCreateLogLevel, 
*commonCmdData.LogColorMode)
+                       ctx = action.SetupLogging(ctx, 
common.GetNelmLogLevel(&commonCmdData), action.DefaultSecretKeyCreateLogLevel, 
*commonCmdData.LogColorMode, true)
 
                        if _, err := action.SecretKeyCreate(ctx, 
action.SecretKeyCreateOptions{}); err != nil {
                                return fmt.Errorf("create secret key: %w", err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/rotate_secret_key/rotate_secret_key.go 
new/werf-2.35.7/cmd/werf/helm/secret/rotate_secret_key/rotate_secret_key.go
--- old/werf-2.35.5/cmd/werf/helm/secret/rotate_secret_key/rotate_secret_key.go 
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/rotate_secret_key/rotate_secret_key.go 
2025-04-30 16:31:11.000000000 +0200
@@ -89,7 +89,7 @@
 
        chartPath := filepath.Join(giterminismManager.ProjectDir(), 
relChartPath)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretKeyRotateLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretKeyRotateLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.SecretKeyRotate(ctx, action.SecretKeyRotateOptions{
                ChartDirPath:      chartPath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/values/decrypt/decrypt.go 
new/werf-2.35.7/cmd/werf/helm/secret/values/decrypt/decrypt.go
--- old/werf-2.35.5/cmd/werf/helm/secret/values/decrypt/decrypt.go      
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/values/decrypt/decrypt.go      
2025-04-30 16:31:11.000000000 +0200
@@ -99,7 +99,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileDecryptLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileDecryptLogLevel, *commonCmdData.LogColorMode, 
true)
 
        if err := action.SecretValuesFileDecrypt(ctx, filePath, 
action.SecretValuesFileDecryptOptions{
                OutputFilePath: cmdData.OutputFilePath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/helm/secret/values/edit/edit.go 
new/werf-2.35.7/cmd/werf/helm/secret/values/edit/edit.go
--- old/werf-2.35.5/cmd/werf/helm/secret/values/edit/edit.go    2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/values/edit/edit.go    2025-04-30 
16:31:11.000000000 +0200
@@ -72,7 +72,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileEditLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileEditLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.SecretValuesFileEdit(ctx, filepPath, 
action.SecretValuesFileEditOptions{
                TempDirPath:   werf.GetTmpDir(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/cmd/werf/helm/secret/values/encrypt/encrypt.go 
new/werf-2.35.7/cmd/werf/helm/secret/values/encrypt/encrypt.go
--- old/werf-2.35.5/cmd/werf/helm/secret/values/encrypt/encrypt.go      
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/cmd/werf/helm/secret/values/encrypt/encrypt.go      
2025-04-30 16:31:11.000000000 +0200
@@ -90,7 +90,7 @@
 
        workingDir := common.GetWorkingDir(&commonCmdData)
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileEncryptLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultSecretValuesFileEncryptLogLevel, *commonCmdData.LogColorMode, 
true)
 
        if err := action.SecretValuesFileEncrypt(ctx, filePath, 
action.SecretValuesFileEncryptOptions{
                OutputFilePath: cmdData.OutputFilePath,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/plan/plan.go 
new/werf-2.35.7/cmd/werf/plan/plan.go
--- old/werf-2.35.5/cmd/werf/plan/plan.go       2025-04-28 10:49:52.000000000 
+0200
+++ new/werf-2.35.7/cmd/werf/plan/plan.go       2025-04-30 16:31:11.000000000 
+0200
@@ -434,7 +434,7 @@
 
        loader.ChartFileReader = giterminismManager.FileReader()
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleasePlanInstallLogLevel, *commonCmdData.LogColorMode)
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultReleasePlanInstallLogLevel, *commonCmdData.LogColorMode, false)
 
        if err := action.ReleasePlanInstall(ctx, releaseName, releaseNamespace, 
action.ReleasePlanInstallOptions{
                ChartAppVersion:              
common.GetHelmChartConfigAppVersion(werfConfig),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/cmd/werf/render/render.go 
new/werf-2.35.7/cmd/werf/render/render.go
--- old/werf-2.35.5/cmd/werf/render/render.go   2025-04-28 10:49:52.000000000 
+0200
+++ new/werf-2.35.7/cmd/werf/render/render.go   2025-04-30 16:31:11.000000000 
+0200
@@ -393,7 +393,9 @@
 
        loader.ChartFileReader = giterminismManager.FileReader()
 
-       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultChartRenderLogLevel, *commonCmdData.LogColorMode)
+       // TODO(v3): get rid of forcing color mode via ci-env and use color 
mode detection logic from
+       // Nelm instead. Until then, color will be always off here.
+       ctx = action.SetupLogging(ctx, common.GetNelmLogLevel(&commonCmdData), 
action.DefaultChartRenderLogLevel, action.LogColorModeOff, true)
 
        if err := action.ChartRender(ctx, action.ChartRenderOptions{
                ChartAppVersion:              
common.GetHelmChartConfigAppVersion(werfConfig),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_apply.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_apply.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_apply.md   
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_apply.md   
2025-04-30 16:31:11.000000000 +0200
@@ -18,21 +18,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --atomic=false
             Enable auto rollback of the failed release to the previous 
deployed release version     
             when current deploy process have failed ($WERF_ATOMIC by default)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_publish.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_publish.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_publish.md 
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_publish.md 
2025-04-30 16:31:11.000000000 +0200
@@ -19,12 +19,12 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-custom-tag=[]
             Set tag alias for the content-based tag.
             The alias may contain the following shortcuts:
@@ -37,12 +37,11 @@
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --allowed-backend-storage-volume-usage=70
             Set allowed percentage of backend (Docker or Buildah) storage 
volume usage which will   
             cause cleanup of least recently used local backend images (default 
70% or               
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_render.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_render.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_bundle_render.md  
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_bundle_render.md  
2025-04-30 16:31:11.000000000 +0200
@@ -29,21 +29,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
   -b, --bundle-dir=""
             Get extracted bundle from directory instead of registry (default 
$WERF_BUNDLE_DIR)
       --container-registry-mirror=[]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_converge.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_converge.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_converge.md       
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_converge.md       
2025-04-30 16:31:11.000000000 +0200
@@ -42,12 +42,12 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-custom-tag=[]
             Set tag alias for the content-based tag.
             The alias may contain the following shortcuts:
@@ -60,12 +60,11 @@
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --allowed-backend-storage-volume-usage=70
             Set allowed percentage of backend (Docker or Buildah) storage 
volume usage which will   
             cause cleanup of least recently used local backend images (default 
70% or               
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_export.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_export.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_export.md 2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_export.md 2025-04-30 
16:31:11.000000000 +0200
@@ -38,13 +38,13 @@
       --add-label=[]
             Add label to exported images (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
+            separator is a newline ",", but it can be customized using the 
--add-label-separator    
             flag.
             Also, can be specified with $WERF_EXPORT_ADD_LABEL_* (e.g.         
                     
             $WERF_EXPORT_ADD_LABEL_1=labelName1=labelValue1,                   
                     
             $WERF_EXPORT_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_EXPORT_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_EXPORT_ADD_LABEL_SEPARATOR or ",")
       --cache-repo=[]
             Specify one or multiple cache repos with images that will be used 
as a cache. Cache     
             will be populated when pushing newly built images into the primary 
repo and when        
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_install.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_install.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_install.md   
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_install.md   
2025-04-30 16:31:11.000000000 +0200
@@ -61,21 +61,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --atomic=false
             if set, the installation process deletes the installation on 
failure. The --wait flag   
             will be set automatically if --atomic is used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_lint.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_lint.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_lint.md      
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_lint.md      
2025-04-30 16:31:11.000000000 +0200
@@ -19,21 +19,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --env=""
             Use specified environment (default $WERF_ENV)
       --ignore-secret-key=false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_template.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_template.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_template.md  
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_template.md  
2025-04-30 16:31:11.000000000 +0200
@@ -23,21 +23,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
   -a, --api-versions=[]
             Kubernetes api versions used for Capabilities.APIVersions
       --atomic=false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_upgrade.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_upgrade.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_helm_upgrade.md   
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_helm_upgrade.md   
2025-04-30 16:31:11.000000000 +0200
@@ -31,21 +31,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --atomic=false
             if set, upgrade process rolls back changes made in case of failed 
upgrade. The --wait   
             flag will be set automatically if --atomic is used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_kube_run.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_kube_run.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_kube_run.md       
2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_kube_run.md       
2025-04-30 16:31:11.000000000 +0200
@@ -31,21 +31,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --auto-pull-secret=true
             Automatically create docker config secret in the namespace and 
plug it via pod`s        
             imagePullSecrets for private registry access (default 
$WERF_AUTO_PULL_SECRET or true if 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_plan.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_plan.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_plan.md   2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_plan.md   2025-04-30 
16:31:11.000000000 +0200
@@ -40,12 +40,12 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-custom-tag=[]
             Set tag alias for the content-based tag.
             The alias may contain the following shortcuts:
@@ -58,12 +58,11 @@
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --allowed-backend-storage-volume-usage=70
             Set allowed percentage of backend (Docker or Buildah) storage 
volume usage which will   
             cause cleanup of least recently used local backend images (default 
70% or               
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/werf-2.35.5/docs/_includes/reference/cli/werf_render.md 
new/werf-2.35.7/docs/_includes/reference/cli/werf_render.md
--- old/werf-2.35.5/docs/_includes/reference/cli/werf_render.md 2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/docs/_includes/reference/cli/werf_render.md 2025-04-30 
16:31:11.000000000 +0200
@@ -29,21 +29,20 @@
       --add-annotation=[]
             Add annotation to deploying resources (can specify multiple).
             Format: annoName=annoValue[<separator>annoName=annoValue ...]. The 
default separator is 
-            a newline ("\n"), but it can be customized using the 
--add-annotation-separator flag.
+            ",", but it can be customized using the --add-annotation-separator 
flag.
             Also, can be specified with $WERF_ADD_ANNOTATION_* (e.g.           
                     
             $WERF_ADD_ANNOTATION_1=annoName1=annoValue1,                       
                     
             $WERF_ADD_ANNOTATION_2=annoName2=annoValue2)
-      --add-annotation-separator="\n"
-            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or "\n")
+      --add-annotation-separator=","
+            Separator for --add-annotation values (default 
$WERF_ADD_ANNOTATION_SEPARATOR or ",")
       --add-label=[]
             Add label to deploying resources (can specify multiple).
             Format: labelName=labelValue[<separator>labelName=labelValue ...]. 
The default          
-            separator is a newline ("\n"), but it can be customized using the 
--add-label-separator 
-            flag.
+            separator is ",", but it can be customized using the 
--add-label-separator flag.
             Also, can be specified with $WERF_ADD_LABEL_* (e.g.                
                     
             $WERF_ADD_LABEL_1=labelName1=labelValue1, 
$WERF_ADD_LABEL_2=labelName2=labelValue2)
-      --add-label-separator="\n"
-            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or "\n")
+      --add-label-separator=","
+            Separator for --add-label values (default 
$WERF_ADD_LABEL_SEPARATOR or ",")
       --build-report-path=""
             Change build report path and format (by default 
$WERF_BUILD_REPORT_PATH or              
             ".werf-build-report.json" if not set). Extension must be either 
.json for JSON format   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/go.mod new/werf-2.35.7/go.mod
--- old/werf-2.35.5/go.mod      2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/go.mod      2025-04-30 16:31:11.000000000 +0200
@@ -66,7 +66,7 @@
        github.com/werf/kubedog-for-werf-helm v0.0.0-20241217155728-9d45c48b82b6
        github.com/werf/lockgate v0.1.1
        github.com/werf/logboek v0.6.1
-       github.com/werf/nelm v1.2.1-0.20250425130741-e52374c3071f
+       github.com/werf/nelm v1.2.3-0.20250430122641-a03bd9de934a
        github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf
        go.opentelemetry.io/otel v1.24.0
        go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/go.sum new/werf-2.35.7/go.sum
--- old/werf-2.35.5/go.sum      2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/go.sum      2025-04-30 16:31:11.000000000 +0200
@@ -1406,8 +1406,8 @@
 github.com/werf/lockgate v0.1.1/go.mod 
h1:0yIFSLq9ausy6ejNxF5uUBf/Ib6daMAfXuCaTMZJzIE=
 github.com/werf/logboek v0.6.1 h1:oEe6FkmlKg0z0n80oZjLplj6sXcBeLleCkjfOOZEL2g=
 github.com/werf/logboek v0.6.1/go.mod 
h1:Gez5J4bxekyr6MxTmIJyId1F61rpO+0/V4vjCIEIZmk=
-github.com/werf/nelm v1.2.1-0.20250425130741-e52374c3071f 
h1:k/5vzox+M8ZC/sAeWmzLucEYvGVyMu2FIPMwNSKMlfc=
-github.com/werf/nelm v1.2.1-0.20250425130741-e52374c3071f/go.mod 
h1:9SR2Rfi0uE06z5bbnFRqfZTePNGnbyw9RLOVyYuV+cg=
+github.com/werf/nelm v1.2.3-0.20250430122641-a03bd9de934a 
h1:iufvbMmsTGYtV4F0DV5WLVE7gi7xCRp5qFPBvqwSXJQ=
+github.com/werf/nelm v1.2.3-0.20250430122641-a03bd9de934a/go.mod 
h1:9SR2Rfi0uE06z5bbnFRqfZTePNGnbyw9RLOVyYuV+cg=
 github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf 
h1:K51qz209c1yJgKzPw8AeS72T21F/ACp0VI3RJvT4THA=
 github.com/werf/nelm-for-werf-helm v0.0.0-20241217155925-b0e6734d1dbf/go.mod 
h1:7RJXSGPKKPEvfPqrTwNA8jT7y52O0ebwhSbSn29ESMA=
 github.com/xanzy/go-gitlab v0.31.0/go.mod 
h1:sPLojNBn68fMUWSxIJtdVVIP8uSBYqesTfDUseX11Ug=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/pkg/build/stage/dependencies.go 
new/werf-2.35.7/pkg/build/stage/dependencies.go
--- old/werf-2.35.5/pkg/build/stage/dependencies.go     2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/pkg/build/stage/dependencies.go     2025-04-30 
16:31:11.000000000 +0200
@@ -67,22 +67,39 @@
        dependencies []*config.Dependency
 }
 
-func (s *DependenciesStage) GetDependencies(ctx context.Context, c Conveyor, 
cb container_backend.ContainerBackend, prevImage, prevBuiltImage *StageImage, 
buildContextArchive container_backend.BuildContextArchiver) (string, error) {
+func (s *DependenciesStage) GetDependencies(ctx context.Context, c Conveyor, 
cb container_backend.ContainerBackend, _, _ *StageImage, _ 
container_backend.BuildContextArchiver) (string, error) {
        var args []string
 
-       for ind, elm := range s.imports {
-               var sourceChecksum string
-               var err error
-               if err := logboek.Context(ctx).Info().LogProcess("Getting 
import %d source checksum ...", ind).DoError(func() error {
-                       sourceChecksum, err = s.getImportSourceChecksum(ctx, c, 
cb, elm)
-                       return err
+       if len(s.imports) != 0 {
+               if err := 
logboek.Context(ctx).Default().LogProcess("Calculating import 
checksums").DoError(func() error {
+                       for ind, elm := range s.imports {
+                               sourceChecksum, err := 
s.getImportSourceChecksum(ctx, c, cb, elm)
+                               if err != nil {
+                                       return fmt.Errorf("unable to get import 
%d source checksum: %w", ind, err)
+                               }
+
+                               var importTitle string
+                               {
+                                       importTitle = fmt.Sprintf("image=%s 
add=%s to=%s", elm.ImageName, elm.Add, elm.To)
+                                       if len(elm.IncludePaths) != 0 {
+                                               importTitle += fmt.Sprintf(" 
includePaths=%v", elm.IncludePaths)
+                                       }
+                                       if len(elm.ExcludePaths) != 0 {
+                                               importTitle += fmt.Sprintf(" 
excludePaths=%v", elm.ExcludePaths)
+                                       }
+                                       importTitle = fmt.Sprintf("import[%s]", 
importTitle)
+                               }
+
+                               logboek.Context(ctx).Default().LogF("%s: %s\n", 
sourceChecksum, importTitle)
+
+                               args = append(args, sourceChecksum)
+                               args = append(args, elm.To)
+                               args = append(args, elm.Group, elm.Owner)
+                       }
+                       return nil
                }); err != nil {
-                       return "", fmt.Errorf("unable to get import %d source 
checksum: %w", ind, err)
+                       return "", err
                }
-
-               args = append(args, sourceChecksum)
-               args = append(args, elm.To)
-               args = append(args, elm.Group, elm.Owner)
        }
 
        for _, dep := range s.dependencies {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/pkg/deploy/bundles/copy_test.go 
new/werf-2.35.7/pkg/deploy/bundles/copy_test.go
--- old/werf-2.35.5/pkg/deploy/bundles/copy_test.go     2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/pkg/deploy/bundles/copy_test.go     2025-04-30 
16:31:11.000000000 +0200
@@ -32,11 +32,11 @@
                                Values: map[string]interface{}{
                                        "werf": map[string]interface{}{
                                                "image": map[string]interface{}{
-                                                       "image-1": "REPO:tag-1",
-                                                       "image-2": "REPO:tag-2",
-                                                       "image-3": "REPO:tag-3",
+                                                       "image-1": "repo:tag-1",
+                                                       "image-2": "repo:tag-2",
+                                                       "image-3": "repo:tag-3",
                                                },
-                                               "repo": "REPO",
+                                               "repo": "repo",
                                        },
                                },
                                Raw: []*chart.File{
@@ -45,10 +45,10 @@
                                                Data: []byte(`
 werf:
   image:
-    image-1: REPO:tag-1
-    image-2: REPO:tag-2
-    image-3: REPO:tag-3
-  repo: REPO
+    image-1: repo:tag-1
+    image-2: repo:tag-2
+    image-3: repo:tag-3
+  repo: repo
   `),
                                        },
                                },
@@ -91,11 +91,11 @@
                        Values: map[string]interface{}{
                                "werf": map[string]interface{}{
                                        "image": map[string]interface{}{
-                                               "image-1": "REPO:tag-1",
-                                               "image-2": "REPO:tag-2",
-                                               "image-3": "REPO:tag-3",
+                                               "image-1": "repo:tag-1",
+                                               "image-2": "repo:tag-2",
+                                               "image-3": "repo:tag-3",
                                        },
-                                       "repo": "REPO",
+                                       "repo": "repo",
                                },
                        },
                        Raw: []*chart.File{
@@ -104,10 +104,10 @@
                                        Data: []byte(`
 werf:
   image:
-    image-1: REPO:tag-1
-    image-2: REPO:tag-2
-    image-3: REPO:tag-3
-  repo: REPO
+    image-1: repo:tag-1
+    image-2: repo:tag-2
+    image-3: repo:tag-3
+  repo: repo
 `),
                                },
                        },
@@ -165,11 +165,11 @@
                        Values: map[string]interface{}{
                                "werf": map[string]interface{}{
                                        "image": map[string]interface{}{
-                                               "image-1": "REPO:tag-1",
-                                               "image-2": "REPO:tag-2",
-                                               "image-3": "REPO:tag-3",
+                                               "image-1": "repo:tag-1",
+                                               "image-2": "repo:tag-2",
+                                               "image-3": "repo:tag-3",
                                        },
-                                       "repo": "REPO",
+                                       "repo": "repo",
                                },
                        },
                        Raw: []*chart.File{
@@ -178,10 +178,10 @@
                                        Data: []byte(`
 werf:
   image:
-    image-1: REPO:tag-1
-    image-2: REPO:tag-2
-    image-3: REPO:tag-3
-  repo: REPO
+    image-1: repo:tag-1
+    image-2: repo:tag-2
+    image-3: repo:tag-3
+  repo: repo
 `),
                                },
                        },
@@ -239,11 +239,11 @@
                        Values: map[string]interface{}{
                                "werf": map[string]interface{}{
                                        "image": map[string]interface{}{
-                                               "image-1": "REPO:tag-1",
-                                               "image-2": "REPO:tag-2",
-                                               "image-3": "REPO:tag-3",
+                                               "image-1": "repo:tag-1",
+                                               "image-2": "repo:tag-2",
+                                               "image-3": "repo:tag-3",
                                        },
-                                       "repo": "REPO",
+                                       "repo": "repo",
                                },
                        },
                        Raw: []*chart.File{
@@ -252,10 +252,10 @@
                                        Data: []byte(`
 werf:
   image:
-    image-1: REPO:tag-1
-    image-2: REPO:tag-2
-    image-3: REPO:tag-3
-  repo: REPO
+    image-1: repo:tag-1
+    image-2: repo:tag-2
+    image-3: repo:tag-3
+  repo: repo
 `),
                                },
                        },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/pkg/deploy/bundles/registry/reference.go 
new/werf-2.35.7/pkg/deploy/bundles/registry/reference.go
--- old/werf-2.35.5/pkg/deploy/bundles/registry/reference.go    2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/pkg/deploy/bundles/registry/reference.go    2025-04-30 
16:31:11.000000000 +0200
@@ -17,23 +17,9 @@
 package registry // import "helm.sh/helm/v3/internal/experimental/registry"
 
 import (
-       "errors"
        "fmt"
-       "net/url"
-       "regexp"
-       "strconv"
-       "strings"
-)
 
-var (
-       validPortRegEx = 
regexp.MustCompile(`^([1-9]\d{0,3}|0|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$`)
 // adapted from https://stackoverflow.com/a/12968117
-       // TODO: Currently we don't support digests, so we are only splitting 
on the
-       // colon. However, when we add support for digests, we'll need to use 
the
-       // regexp anyway to split on both colons and @, so leaving it like this 
for
-       // now
-       referenceDelimiter = regexp.MustCompile(`[:]`)
-       errEmptyRepo       = errors.New("parsed repo was empty")
-       errTooManyColons   = errors.New("ref may only contain a single colon 
character (:) unless specifying a port number")
+       "github.com/google/go-containerregistry/pkg/name"
 )
 
 type (
@@ -46,34 +32,15 @@
 
 // ParseReference converts a string to a Reference
 func ParseReference(s string) (*Reference, error) {
-       if s == "" {
-               return nil, errEmptyRepo
-       }
-       // Split the components of the string on the colon or @, if it is more 
than 3,
-       // immediately return an error. Other validation will be performed 
later in
-       // the function
-       splitComponents := fixSplitComponents(referenceDelimiter.Split(s, -1))
-       if len(splitComponents) > 3 {
-               return nil, errTooManyColons
-       }
-
-       var ref *Reference
-       switch len(splitComponents) {
-       case 1:
-               ref = &Reference{Repo: splitComponents[0]}
-       case 2:
-               ref = &Reference{Repo: splitComponents[0], Tag: 
splitComponents[1]}
-       case 3:
-               ref = &Reference{Repo: strings.Join(splitComponents[:2], ":"), 
Tag: splitComponents[2]}
-       }
-
-       // ensure the reference is valid
-       err := ref.validate()
+       r, err := name.ParseReference(s, name.WeakValidation)
        if err != nil {
                return nil, err
        }
 
-       return ref, nil
+       return &Reference{
+               Tag:  r.Identifier(),
+               Repo: r.Context().Name(),
+       }, nil
 }
 
 // FullName the full name of a reference (repo:tag)
@@ -83,63 +50,3 @@
        }
        return fmt.Sprintf("%s:%s", ref.Repo, ref.Tag)
 }
-
-// validate makes sure the ref meets our criteria
-func (ref *Reference) validate() error {
-       err := ref.validateRepo()
-       if err != nil {
-               return err
-       }
-       return ref.validateNumColons()
-}
-
-// validateRepo checks that the Repo field is non-empty
-func (ref *Reference) validateRepo() error {
-       if ref.Repo == "" {
-               return errEmptyRepo
-       }
-       // Makes sure the repo results in a parsable URL (similar to what is 
done
-       // with containerd reference parsing)
-       _, err := url.Parse("//" + ref.Repo)
-       return err
-}
-
-// validateNumColons ensures the ref only contains a single colon character (:)
-// (or potentially two, there might be a port number specified i.e. :5000)
-func (ref *Reference) validateNumColons() error {
-       if strings.Contains(ref.Tag, ":") {
-               return errTooManyColons
-       }
-       parts := strings.Split(ref.Repo, ":")
-       lastIndex := len(parts) - 1
-       if 1 < lastIndex {
-               return errTooManyColons
-       }
-       if 0 < lastIndex {
-               port := strings.Split(parts[lastIndex], "/")[0]
-               if !isValidPort(port) {
-                       return errTooManyColons
-               }
-       }
-       return nil
-}
-
-// isValidPort returns whether or not a string looks like a valid port
-func isValidPort(s string) bool {
-       return validPortRegEx.MatchString(s)
-}
-
-// fixSplitComponents this will modify reference parts based on presence of 
port
-// Example: {localhost, 5000/x/y/z, 0.1.0} => {localhost:5000/x/y/z, 0.1.0}
-func fixSplitComponents(c []string) []string {
-       if len(c) <= 1 {
-               return c
-       }
-       possiblePortParts := strings.Split(c[1], "/")
-       if _, err := strconv.Atoi(possiblePortParts[0]); err == nil {
-               components := []string{strings.Join(c[:2], ":")}
-               components = append(components, c[2:]...)
-               return components
-       }
-       return c
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/pkg/deploy/bundles/remote_bundle.go 
new/werf-2.35.7/pkg/deploy/bundles/remote_bundle.go
--- old/werf-2.35.5/pkg/deploy/bundles/remote_bundle.go 2025-04-28 
10:49:52.000000000 +0200
+++ new/werf-2.35.7/pkg/deploy/bundles/remote_bundle.go 2025-04-30 
16:31:11.000000000 +0200
@@ -96,7 +96,7 @@
                                        if imageRef, ok := v.(string); ok {
                                                ref, err := 
bundles_registry.ParseReference(imageRef)
                                                if err != nil {
-                                                       return 
fmt.Errorf("unable to parse bundle image %s: %w", imageRef, err)
+                                                       return err
                                                }
                                                ref.Repo = 
bundle.RegistryAddress.Repo
 
@@ -168,7 +168,7 @@
                                        if image, ok := v.(string); ok {
                                                ref, err := 
bundles_registry.ParseReference(image)
                                                if err != nil {
-                                                       return 
fmt.Errorf("unable to parse bundle image %s: %w", image, err)
+                                                       return err
                                                }
 
                                                ref.Repo = 
bundle.RegistryAddress.Repo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/werf-2.35.5/trdl_channels.yaml 
new/werf-2.35.7/trdl_channels.yaml
--- old/werf-2.35.5/trdl_channels.yaml  2025-04-28 10:49:52.000000000 +0200
+++ new/werf-2.35.7/trdl_channels.yaml  2025-04-30 16:31:11.000000000 +0200
@@ -38,7 +38,7 @@
   - name: "2"
     channels:
       - name: alpha
-        version: 2.35.4
+        version: 2.35.6
       - name: beta
         version: 2.35.1
       - name: ea

++++++ werf.obsinfo ++++++
--- /var/tmp/diff_new_pack.7DrHbL/_old  2025-05-01 15:23:24.362982727 +0200
+++ /var/tmp/diff_new_pack.7DrHbL/_new  2025-05-01 15:23:24.366982895 +0200
@@ -1,5 +1,5 @@
 name: werf
-version: 2.35.5
-mtime: 1745830192
-commit: b33c397d6bf194cdde382f3c98adebe62ef67e36
+version: 2.35.7
+mtime: 1746023471
+commit: 346c06575907254603ada1598ea117cbfb1514d9
 

Reply via email to