helmfile/pkg/state
Dominik Schmidt ad45f0a1b9 feat: add dir= selector for path-based release filtering and traversal skip
Introduce a new selector key `dir=<path>` to the -l/--selector flag with two
effects: it filters releases by the directory of their defining helmfile
relative to the root helmfile (using directory-prefix matching, so
dir=apps/foo matches both apps/foo and apps/foo/sub), and it short-circuits
sub-helmfile traversal when paired with positive dir= constraints, so
non-matching branches in the helmfiles: tree are not parsed, templated, or
fetched.

The motivation is consuming aggregator-style upstreams that the operator
does not control (opendesk being the immediate example), where the user
cannot restructure the helmfile layout but still wants to act on a subset.

The dir label is auto-populated at filter time only; user-facing label
output is unchanged. The label key "dir" is reserved at state load.
Selectors that escape the root via .. or absolute paths, and the bare ".",
are rejected at parse time.

Signed-off-by: Dominik Schmidt <dev@dominik-schmidt.de>
2026-05-22 17:20:52 +02:00
..
testdata feat(state): add mergeStrategy: fallback for first-file-wins env values (#2578) 2026-05-07 21:50:05 +08:00
chart_dependencies_rewrite_test.go fix: refresh Chart.lock after rewriting file:// dependencies (#2587) 2026-05-19 05:41:41 +08:00
chart_dependency.go fix: deduplicate chart dependencies in helmfile.lock (#2567) 2026-05-01 20:29:24 +08:00
chart_dependency_test.go fix: deduplicate chart dependencies in helmfile.lock (#2567) 2026-05-01 20:29:24 +08:00
create.go feat: add dir= selector for path-based release filtering and traversal skip 2026-05-22 17:20:52 +02:00
create_test.go feat(state): add mergeStrategy: fallback for first-file-wins env values (#2578) 2026-05-07 21:50:05 +08:00
diff_error_propagation_test.go feat: add Helm 4 support while maintaining Helm 3 compatibility (#2262) 2025-11-19 07:49:30 +08:00
environment.go feat(state): add mergeStrategy: fallback for first-file-wins env values (#2578) 2026-05-07 21:50:05 +08:00
envvals_loader.go feat(state): add mergeStrategy: fallback for first-file-wins env values (#2578) 2026-05-07 21:50:05 +08:00
envvals_loader_test.go feat(state): add mergeStrategy: fallback for first-file-wins env values (#2578) 2026-05-07 21:50:05 +08:00
helmx.go fix: normalize dependency chart path before DirectoryExistsAt check (#2598) 2026-05-20 08:44:14 +08:00
helmx_test.go fix: use --force-replace flag for Helm 4 instead of deprecated --force (#2477) 2026-03-11 21:23:51 +08:00
issue_2297_test.go fix: resolve issues #2295, #2296, and #2297 (#2298) 2025-11-27 22:13:03 +08:00
issue_2355_test.go fix: resolve --validate flag conflict with kustomize in Helm 4 (#2362) 2026-01-18 13:59:55 +08:00
issue_2444_test.go fix: pass --kubeconfig to chartify's helm template call (#2449) 2026-03-03 20:56:46 +08:00
issue_2549_test.go Honor `skipSchemaValidation` during chartification when `forceNamespace` is set (#2550) 2026-04-30 12:30:41 -04:00
issue_2596_test.go fix: normalize dependency chart path before DirectoryExistsAt check (#2598) 2026-05-20 08:44:14 +08:00
oci_chart_lock_test.go fix: skip cache refresh for shared cache paths to prevent race conditions (#2396) 2026-02-14 10:46:05 +08:00
oci_chart_version_test.go fix: support OCI chart digest syntax (@sha256:...) (#2398) 2026-02-12 20:20:43 +08:00
oci_parse_test.go fix: support OCI chart digest syntax (@sha256:...) (#2398) 2026-02-12 20:20:43 +08:00
release.go feat: execute templates against postRendererHooks (#1839) 2025-01-28 09:34:59 -05:00
release_error.go Fix misleading `helmfile diff` output (#1174) 2020-04-04 17:39:20 +09:00
release_filters.go feat: add dir= selector for path-based release filtering and traversal skip 2026-05-22 17:20:52 +02:00
release_filters_test.go feat: add dir= selector for path-based release filtering and traversal skip 2026-05-22 17:20:52 +02:00
release_test.go refactor(yaml): upgrade from gopkg.in/yaml.v2 to v3 (#2039) 2025-05-15 10:21:37 -04:00
run_helm_dep_builds_skip_refresh_test.go fix: local chart with external dependencies error when repos configured (#2433) 2026-02-28 09:23:04 +08:00
selector_test.go feat: add labels for helm release (#1046) 2025-03-30 19:24:41 -04:00
skip_test.go Fix four critical bugs: array merging (#2281), AWS SDK logging (#2270), helmDefaults skip flags (#2269), and OCI chart versions (#2247) (#2288) 2025-11-22 09:27:51 +08:00
state.go feat: add dir= selector for path-based release filtering and traversal skip 2026-05-22 17:20:52 +02:00
state_exec_tmpl.go feat: add defaultInherit for automatic release template inheritance (#2600) 2026-05-20 18:21:03 +08:00
state_exec_tmpl_test.go feat: add defaultInherit for automatic release template inheritance (#2600) 2026-05-20 18:21:03 +08:00
state_gogetter_test.go Prevent excessive log in tests 2022-10-11 06:19:32 +09:00
state_kubeversion_test.go 🐛 Fix four critical issues: environment merging, kubeVersion detection, lookup() with kustomize, and Helm 4 color flags (#2276) 2025-11-21 08:32:54 +08:00
state_run.go Drop Helm v2 support (#613) 2023-01-17 09:24:47 +09:00
state_test.go feat: add dir= selector for path-based release filtering and traversal skip 2026-05-22 17:20:52 +02:00
storage.go fix: eliminate os.Chdir in sequential helmfiles to fix relative path resolution (#2410) 2026-02-22 09:21:46 +08:00
storage_test.go fix: array merge regression - layer arrays now replace defaults (#2367) 2026-01-18 14:04:54 +08:00
temp.go Replace interface{} by any (#901) 2023-06-16 10:49:05 +09:00
temp_test.go fix: add trackFailOnError option to control kubedog exit code (#2576) 2026-05-04 14:20:03 +08:00
types.go fix: boolean false overrides dropped in multi-document helmfiles (#2527) (#2532) 2026-04-12 09:44:49 +08:00
types_test.go fix: boolean false overrides dropped in multi-document helmfiles (#2527) (#2532) 2026-04-12 09:44:49 +08:00
util.go fix: version path issue (#1344) 2024-02-16 09:08:28 +09:00
util_test.go fix: version path issue (#1344) 2024-02-16 09:08:28 +09:00