Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nelm for openSUSE:Factory checked in 
at 2026-02-20 17:46:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nelm (Old)
 and      /work/SRC/openSUSE:Factory/.nelm.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nelm"

Fri Feb 20 17:46:31 2026 rev:23 rq:1334179 version:1.20.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/nelm/nelm.changes        2026-02-05 
18:02:12.048139083 +0100
+++ /work/SRC/openSUSE:Factory/.nelm.new.1977/nelm.changes      2026-02-20 
17:54:19.824824234 +0100
@@ -1,0 +2,11 @@
+Fri Feb 20 11:33:12 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.20.0:
+  * Features
+    - NELM_FEAT_MORE_DETAILED_EXIT_CODE_FOR_PLAN=true to return
+      exit code 3 on "no resource changes, but must install
+      release" if --exit-code (#515) (d24f926)
+  * Bug Fixes
+    - panic in pre/post-delete hooks tracking (#518) (f01de36)
+
+-------------------------------------------------------------------

Old:
----
  nelm-1.19.1.obscpio

New:
----
  nelm-1.20.0.obscpio

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

Other differences:
------------------
++++++ nelm.spec ++++++
--- /var/tmp/diff_new_pack.48qLRh/_old  2026-02-20 17:54:23.268968513 +0100
+++ /var/tmp/diff_new_pack.48qLRh/_new  2026-02-20 17:54:23.284969183 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           nelm
-Version:        1.19.1
+Version:        1.20.0
 Release:        0
 Summary:        Helm 3 alternative
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.48qLRh/_old  2026-02-20 17:54:23.612982923 +0100
+++ /var/tmp/diff_new_pack.48qLRh/_new  2026-02-20 17:54:23.644984264 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/werf/nelm</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.19.1</param>
+    <param name="revision">v1.20.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.48qLRh/_old  2026-02-20 17:54:23.896994821 +0100
+++ /var/tmp/diff_new_pack.48qLRh/_new  2026-02-20 17:54:23.952997167 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/werf/nelm</param>
-              <param 
name="changesrevision">0b2816ba60ef9b7492a05aeec97aa71670cba19b</param></service></servicedata>
+              <param 
name="changesrevision">8de8880a68c18113efc41a636a30513aaea8a02d</param></service></servicedata>
 (No newline at EOF)
 

++++++ nelm-1.19.1.obscpio -> nelm-1.20.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/ARCHITECTURE.md 
new/nelm-1.20.0/ARCHITECTURE.md
--- old/nelm-1.19.1/ARCHITECTURE.md     1970-01-01 01:00:00.000000000 +0100
+++ new/nelm-1.20.0/ARCHITECTURE.md     2025-12-23 12:44:35.000000000 +0100
@@ -0,0 +1,26 @@
+<!-- START doctoc generated TOC please keep comment here to allow auto update 
-->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+
+- [Overview](#overview)
+- [Dependencies](#dependencies)
+- [Architecture](#architecture)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## Overview
+
+Nelm originally was just a werf deployment engine, but eventually got its own 
repo and CLI. Nelm is reusing parts of the Helm codebase, but most of its 
codebase is written from scratch.
+
+## Dependencies
+
+Nelm depends on the following projects from the "werf" organization:
+
+* https://github.com/werf/3p-helm is a fork of Helm with some modifications. 
We use some parts of this fork in Nelm.
+* https://github.com/werf/kubedog is a library for tracking Kubernetes 
resource statuses, collecting logs and events during Nelm deployments.
+* https://github.com/werf/common-go is a library with some common code shared 
between various werf projects.
+
+Nelm is pretty straightforward: no frameworks, no CGO, no code generation, and 
libraries we use are very common (e.g. Cobra for CLI). For the full list of 
dependencies look into the `go.mod` file.
+
+## Architecture
+
+TODO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/CHANGELOG.md new/nelm-1.20.0/CHANGELOG.md
--- old/nelm-1.19.1/CHANGELOG.md        2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/CHANGELOG.md        2025-12-23 12:44:35.000000000 +0100
@@ -1,5 +1,17 @@
 # Changelog
 
+## [1.20.0](https://github.com/werf/nelm/compare/v1.19.1...v1.20.0) 
(2025-12-23)
+
+
+### Features
+
+* `NELM_FEAT_MORE_DETAILED_EXIT_CODE_FOR_PLAN=true` to return exit code 3 on 
"no resource changes, but must install release" if `--exit-code` 
([#515](https://github.com/werf/nelm/issues/515)) 
([d24f926](https://github.com/werf/nelm/commit/d24f9262926b5a8fa39162bbd145b53034988f16))
+
+
+### Bug Fixes
+
+* panic in pre/post-delete hooks tracking 
([#518](https://github.com/werf/nelm/issues/518)) 
([f01de36](https://github.com/werf/nelm/commit/f01de366eaa93a92c556b1bb18350e25c7ba3976))
+
 ## [1.19.1](https://github.com/werf/nelm/compare/v1.19.0...v1.19.1) 
(2025-12-10)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/README.md new/nelm-1.20.0/README.md
--- old/nelm-1.19.1/README.md   2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/README.md   2025-12-23 12:44:35.000000000 +0100
@@ -78,9 +78,13 @@
   - [`NELM_FEAT_PERIODIC_STACK_TRACES` environment 
variable](#nelm_feat_periodic_stack_traces-environment-variable)
   - [`NELM_FEAT_FIELD_SENSITIVE` environment 
variable](#nelm_feat_field_sensitive-environment-variable)
   - [`NELM_FEAT_CLEAN_NULL_FIELDS` environment 
variable](#nelm_feat_clean_null_fields-environment-variable)
+  - [`NELM_FEAT_MORE_DETAILED_EXIT_CODE_FOR_PLAN` environment 
variable](#nelm_feat_more_detailed_exit_code_for_plan-environment-variable)
 - [More documentation](#more-documentation)
-- [Future plans](#future-plans)
 - [Limitations](#limitations)
+- [Contributing](#contributing)
+- [Development](#development)
+- [Architecture](#architecture)
+- [Future plans](#future-plans)
 
 <!-- END doctoc generated TOC please keep comment here to allow auto update -->
 
@@ -840,10 +844,48 @@
 nelm release install -n myproject -r myproject
 ```
 
+### `NELM_FEAT_MORE_DETAILED_EXIT_CODE_FOR_PLAN` environment variable
+
+When the `--exit-code` flag is specified for `nelm release plan install`, 
return exit code 3, if no resource changes planned, but release still must be 
installed. Previously, exit code 2 was returned in this case.
+
+Will be the default in the next major release.
+
+Example:
+```shell
+export NELM_FEAT_MORE_DETAILED_EXIT_CODE_FOR_PLAN=true
+nelm release plan install -n myproject -r myproject --exit-code
+```
+
 ## More documentation
 
 For documentation on regular Helm features, see [Helm 
docs](https://helm.sh/docs/). A lot of useful documentation can be found in 
[werf docs](https://werf.io/docs/v2/usage/deploy/overview.html).
 
+## Limitations
+
+* Nelm requires Server-Side Apply enabled in Kubernetes. It is enabled by 
default since Kubernetes 1.16. In Kubernetes 1.14-1.15 it can be enabled, but 
disabled by default. Kubernetes 1.13 and older doesn't have Server-Side Apply, 
thus Nelm won't work with it.
+* *Helm sometimes uses Values from the previous Helm release to deploy a new 
release*. This is to make Helm easier to use without a proper CI/CD process. 
This is dangerous, goes against IaC and this is not what users expect. Nelm 
will never do this: what you explicitly pass via `--values` and `--set` options 
will be merged with chart values files, then applied to the cluster, as 
expected.
+
+## Contributing
+
+For any significant change, open the issue first (or comment on an existing 
one) to discuss with the maintainers on what to do and how. When the solution 
is agreed upon, you can proceed with implementation and open a pull request.
+
+For small changes, such as few lines bugfixes or documentation improvements, 
feel free to open a pull request directly.
+
+For easy first issues, check the [good first 
issue](https://github.com/werf/nelm/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22)
 tag.
+
+## Development
+
+1. Install Go: https://go.dev/doc/install
+1. Install Task: https://taskfile.dev/docs/installation
+1. Run `task build` to build the `bin/nelm` binary.
+1. Run `task -l` to see all available tasks.
+
+It is recommended to run `task` with no arguments regularly, especially before 
committing. This will run all essential checks, i.e. build, lint, format, quick 
tests, and others.
+
+## Architecture
+
+For architectural overview, see [ARCHITECTURE.md](ARCHITECTURE.md).
+
 ## Future plans
 
 - [x] Nelm CLI.
@@ -859,8 +901,3 @@
 - [ ] Downloading charts directly from Git.
 - [ ] Migrate the built-in secrets management to Mozilla SOPS 
([#62](https://github.com/werf/nelm/issues/62)).
 - [ ] Nelmfile.
-
-## Limitations
-
-* Nelm requires Server-Side Apply enabled in Kubernetes. It is enabled by 
default since Kubernetes 1.16. In Kubernetes 1.14-1.15 it can be enabled, but 
disabled by default. Kubernetes 1.13 and older doesn't have Server-Side Apply, 
thus Nelm won't work with it.
-* *Helm sometimes uses Values from the previous Helm release to deploy a new 
release*. This is to make Helm easier to use without a proper CI/CD process. 
This is dangerous, goes against IaC and this is not what users expect. Nelm 
will never do this: what you explicitly pass via `--values` and `--set` options 
will be merged with chart values files, then applied to the cluster, as 
expected.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/cmd/nelm/chart_upload.go 
new/nelm-1.20.0/cmd/nelm/chart_upload.go
--- old/nelm-1.19.1/cmd/nelm/chart_upload.go    2025-12-10 13:58:40.000000000 
+0100
+++ new/nelm-1.20.0/cmd/nelm/chart_upload.go    2025-12-23 12:44:35.000000000 
+0100
@@ -19,8 +19,8 @@
        }))
 
        cmd.LocalFlags().AddFlagSet(cmd.InheritedFlags())
-       cmd.Use = "upload [chart] [remote]"
-       cmd.Short = "Upload a chart to a repository."
+       cmd.Use = "upload [archive] [remote]"
+       cmd.Short = "Upload a chart archive to a repository."
        cmd.Aliases = []string{}
        cli.SetSubCommandAnnotations(cmd, 40, chartCmdGroup)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/cmd/nelm/main.go 
new/nelm-1.20.0/cmd/nelm/main.go
--- old/nelm-1.19.1/cmd/nelm/main.go    2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/cmd/nelm/main.go    2025-12-23 12:44:35.000000000 +0100
@@ -58,8 +58,10 @@
 
        if err := rootCmd.ExecuteContext(ctx); err != nil {
                var exitCode int
-               if errors.Is(err, action.ErrChangesPlanned) {
+               if errors.Is(err, action.ErrChangesPlanned) || errors.Is(err, 
action.ErrResourceChangesPlanned) {
                        exitCode = 2
+               } else if errors.Is(err, action.ErrReleaseInstallPlanned) {
+                       exitCode = 3
                } else {
                        exitCode = 1
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/cmd/nelm/release_plan_install.go 
new/nelm-1.20.0/cmd/nelm/release_plan_install.go
--- old/nelm-1.19.1/cmd/nelm/release_plan_install.go    2025-12-10 
13:58:40.000000000 +0100
+++ new/nelm-1.20.0/cmd/nelm/release_plan_install.go    2025-12-23 
12:44:35.000000000 +0100
@@ -138,7 +138,14 @@
                        return fmt.Errorf("add flag: %w", err)
                }
 
-               if err := cli.AddFlag(cmd, &cfg.ErrorIfChangesPlanned, 
"exit-code", false, "Return exit code 0 if no changes, 1 if error, 2 if any 
changes planned and no error", cli.AddFlagOptions{
+               var desc string
+               if featgate.FeatGateMoreDetailedExitCodeForPlan.Enabled() || 
featgate.FeatGatePreviewV2.Enabled() {
+                       desc = "Return exit code 0 if no changes, 1 if error, 2 
if resource changes planned, 3 if no resource changes planned, but release 
still should be installed"
+               } else {
+                       desc = "Return exit code 0 if no changes, 1 if error, 2 
if any changes planned"
+               }
+
+               if err := cli.AddFlag(cmd, &cfg.ErrorIfChangesPlanned, 
"exit-code", false, desc, cli.AddFlagOptions{
                        Group: mainFlagGroup,
                }); err != nil {
                        return fmt.Errorf("add flag: %w", err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/go.mod new/nelm-1.20.0/go.mod
--- old/nelm-1.19.1/go.mod      2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/go.mod      2025-12-23 12:44:35.000000000 +0100
@@ -38,7 +38,7 @@
        github.com/stretchr/testify v1.10.0
        github.com/tidwall/sjson v1.2.5
        github.com/wI2L/jsondiff v0.5.0
-       github.com/werf/3p-helm v0.0.0-20251113141050-17dd24e6c20b
+       github.com/werf/3p-helm v0.0.0-20251223091030-77130d200f5c
        github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b
        github.com/werf/kubedog v0.13.1-0.20251210123541-25b3a13e42fe
        github.com/werf/lockgate v0.1.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/go.sum new/nelm-1.20.0/go.sum
--- old/nelm-1.19.1/go.sum      2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/go.sum      2025-12-23 12:44:35.000000000 +0100
@@ -407,8 +407,8 @@
 github.com/tidwall/sjson v1.2.5/go.mod 
h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
 github.com/wI2L/jsondiff v0.5.0 h1:RRMTi/mH+R2aXcPe1VYyvGINJqQfC3R+KSEakuU1Ikw=
 github.com/wI2L/jsondiff v0.5.0/go.mod 
h1:qqG6hnK0Lsrz2BpIVCxWiK9ItsBCpIZQiv0izJjOZ9s=
-github.com/werf/3p-helm v0.0.0-20251113141050-17dd24e6c20b 
h1:O6CamSLgJSG70OLoNettCHqiJYV7/prRXHJSq4sqB3I=
-github.com/werf/3p-helm v0.0.0-20251113141050-17dd24e6c20b/go.mod 
h1:UAmQvGZhiUULXQpigm1yqcp57s097kpAHz2EvFtKCSk=
+github.com/werf/3p-helm v0.0.0-20251223091030-77130d200f5c 
h1:1oQ+geCG75FgIBbn7IxQT+WOD+y+qlM29DNpU7MSdMY=
+github.com/werf/3p-helm v0.0.0-20251223091030-77130d200f5c/go.mod 
h1:UAmQvGZhiUULXQpigm1yqcp57s097kpAHz2EvFtKCSk=
 github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b 
h1:58850oFrnw5Jy5YaB8QifXz75qpGotfx6qqZ9Q2my1A=
 github.com/werf/common-go v0.0.0-20251113140850-a1a98e909e9b/go.mod 
h1:MXS0JR9zut+oR9oEM8PEkdXXoEbKDILTmWopt0z1eZs=
 github.com/werf/kubedog v0.13.1-0.20251210123541-25b3a13e42fe 
h1:fQDk19dTi6CEue5tYR+lroJCFwFrt+zh1kO1b2pjXQo=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/internal/resource/spec/resource_spec.go 
new/nelm-1.20.0/internal/resource/spec/resource_spec.go
--- old/nelm-1.19.1/internal/resource/spec/resource_spec.go     2025-12-10 
13:58:40.000000000 +0100
+++ new/nelm-1.20.0/internal/resource/spec/resource_spec.go     2025-12-23 
12:44:35.000000000 +0100
@@ -28,7 +28,7 @@
 
 func NewResourceSpec(unstruct *unstructured.Unstructured, releaseNamespace 
string, opts ResourceSpecOptions) *ResourceSpec {
        unstruct = CleanUnstruct(unstruct, CleanUnstructOptions{
-               CleanNullFields: (featgate.FeatGatePreviewV2.Enabled() || 
featgate.FeatCleanNullFields.Enabled()) && !opts.LegacyNoCleanNullFields,
+               CleanNullFields: (featgate.FeatGatePreviewV2.Enabled() || 
featgate.FeatGateCleanNullFields.Enabled()) && !opts.LegacyNoCleanNullFields,
        })
 
        if opts.StoreAs == "" {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/pkg/action/release_plan_install.go 
new/nelm-1.20.0/pkg/action/release_plan_install.go
--- old/nelm-1.19.1/pkg/action/release_plan_install.go  2025-12-10 
13:58:40.000000000 +0100
+++ new/nelm-1.20.0/pkg/action/release_plan_install.go  2025-12-23 
12:44:35.000000000 +0100
@@ -24,6 +24,7 @@
        "github.com/werf/nelm/internal/resource/spec"
        "github.com/werf/nelm/internal/util"
        "github.com/werf/nelm/pkg/common"
+       "github.com/werf/nelm/pkg/featgate"
        "github.com/werf/nelm/pkg/log"
 )
 
@@ -31,7 +32,12 @@
        DefaultReleasePlanInstallLogLevel = log.InfoLevel
 )
 
-var ErrChangesPlanned = errors.New("changes planned")
+// TODO(v2): get rid
+var (
+       ErrChangesPlanned         = errors.New("changes planned")
+       ErrResourceChangesPlanned = errors.New("resource changes planned")
+       ErrReleaseInstallPlanned  = errors.New("no resource changes planned, 
but still must install release")
+)
 
 type ReleasePlanInstallOptions struct {
        // Embedded option groups for connection, values, and secrets
@@ -455,8 +461,20 @@
 
        logPlannedChanges(ctx, releaseName, releaseNamespace, changes)
 
-       if opts.ErrorIfChangesPlanned && (!releaseIsUpToDate || 
!installPlanIsUseless) {
-               return ErrChangesPlanned
+       if opts.ErrorIfChangesPlanned {
+               if featgate.FeatGateMoreDetailedExitCodeForPlan.Enabled() || 
featgate.FeatGatePreviewV2.Enabled() {
+                       if releaseIsUpToDate && installPlanIsUseless {
+                               return nil
+                       } else if installPlanIsUseless || len(changes) == 0 {
+                               return ErrReleaseInstallPlanned
+                       } else {
+                               return ErrResourceChangesPlanned
+                       }
+               } else {
+                       if !releaseIsUpToDate || !installPlanIsUseless {
+                               return ErrChangesPlanned
+                       }
+               }
        }
 
        return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/pkg/featgate/feat.go 
new/nelm-1.20.0/pkg/featgate/feat.go
--- old/nelm-1.19.1/pkg/featgate/feat.go        2025-12-10 13:58:40.000000000 
+0100
+++ new/nelm-1.20.0/pkg/featgate/feat.go        2025-12-23 12:44:35.000000000 
+0100
@@ -43,10 +43,15 @@
                `Activate all feature gates that will be enabled by default in 
Nelm v2`,
        )
 
-       FeatCleanNullFields = NewFeatGate(
+       FeatGateCleanNullFields = NewFeatGate(
                "clean-null-fields",
                `Enable cleaning of null fields from resource manifests for 
better Helm chart compatibility`,
        )
+
+       FeatGateMoreDetailedExitCodeForPlan = NewFeatGate(
+               "more-detailed-exit-code-for-plan",
+               `Make the "plan" command with the flag "--exit-code" return an 
exit code 3 instead of 2 when no resource changes, but still must install the 
release`,
+       )
 )
 
 type FeatGate struct {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nelm-1.19.1/trdl_channels.yaml 
new/nelm-1.20.0/trdl_channels.yaml
--- old/nelm-1.19.1/trdl_channels.yaml  2025-12-10 13:58:40.000000000 +0100
+++ new/nelm-1.20.0/trdl_channels.yaml  2025-12-23 12:44:35.000000000 +0100
@@ -2,7 +2,7 @@
   - name: "1"
     channels:
       - name: alpha
-        version: 1.19.0
+        version: 1.19.1
       - name: beta
         version: 1.18.1
       - name: ea

++++++ nelm.obsinfo ++++++
--- /var/tmp/diff_new_pack.48qLRh/_old  2026-02-20 17:54:25.673069223 +0100
+++ /var/tmp/diff_new_pack.48qLRh/_new  2026-02-20 17:54:25.697070228 +0100
@@ -1,5 +1,5 @@
 name: nelm
-version: 1.19.1
-mtime: 1765371520
-commit: 0b2816ba60ef9b7492a05aeec97aa71670cba19b
+version: 1.20.0
+mtime: 1766490275
+commit: 8de8880a68c18113efc41a636a30513aaea8a02d
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/nelm/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.nelm.new.1977/vendor.tar.gz differ: char 130, line 2

Reply via email to