Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package terragrunt for openSUSE:Factory checked in at 2026-06-11 17:28:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/terragrunt (Old) and /work/SRC/openSUSE:Factory/.terragrunt.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "terragrunt" Thu Jun 11 17:28:17 2026 rev:296 rq:1358662 version:1.0.8 Changes: -------- --- /work/SRC/openSUSE:Factory/terragrunt/terragrunt.changes 2026-06-02 16:09:41.756257802 +0200 +++ /work/SRC/openSUSE:Factory/.terragrunt.new.1981/terragrunt.changes 2026-06-11 17:29:45.680369696 +0200 @@ -1,0 +2,477 @@ +Thu Jun 11 04:57:27 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 1.0.8: + * Performance Improvements + - Faster read-file tracking with the mark-many-as-read experiment + With the mark-many-as-read experiment enabled, Terragrunt + records every module file it marks as read during parsing. + The bookkeeping for that record scaled quadratically: each + new path was checked against every path recorded so far, + which got expensive for units with large local module + sources, and monorepos paid that cost again for every unit + and every command. + Recording a path now takes constant time no matter how many + paths came before it, and re-marking already-recorded files + is cheaper still. The reading lists reported by find and list + are unchanged. + * Bug Fixes + - assume_role: preserve commas inside list expressions + Terragrunt previously failed to correctly parse assume_role + attributes containing list values such as transitive_tag_keys + or policy_arns. Commas inside nested list expressions were + incorrectly treated as top-level separators, causing + generated configurations to fail with parsing errors. + + assume_role = { + role_arn = "arn:aws:iam::123456789012:role/test-role" + transitive_tag_keys = ["Project", "Projects"] + } + + This resulted in errors similar to: + + Missing item separator; Expected a comma to mark the beginning of the next item. + + Terragrunt now preserves commas inside nested list and object + expressions when parsing assume_role blocks, allowing + configurations containing array attributes to be processed + correctly. + - Completed experiments now evaluate as permanently enabled + Features gated behind a completed experiment were treated as + disabled instead of permanently enabled, so functionality + that graduated out of experiment status could silently stop + working. + The one affected code path was hcl validate --inputs with a + git filter expression such as --filter '[HEAD~1...HEAD]': + after the filter-flag experiment completed, the command + stopped preparing git worktrees for the filter. Git filter + expressions now work with hcl validate --inputs again, + matching find, list, and the other commands that accept + filters. + - Exposed-include resolution errors now name the include block, + file, and failing field + When resolving an include block with expose = true, + Terragrunt surfaced low-level parsing or conversion errors + with no indication of which include block, file, or field was + at fault. This was especially hard to debug for errors that + carry no source location, such as: + + unsuitable value: a bool is required + + The error is now annotated with the include block name, the + included (parent) file path, and a single dotted locator for + the failing field — the top-level config field (dependency, + inputs, locals, or feature) plus the attribute path within it + when go-cty can determine one: + + exposed include "root" (/path/to/root.hcl): dependency.outputs["enabled"]: unsuitable value: a bool is required + + When go-cty cannot resolve a precise attribute path, the + locator degrades to just the field name: + + exposed include "root" (/path/to/root.hcl): dependency: unsuitable value: a bool is required + + Errors that originate in HCL parsing already carry a source + range (file:line:column) and are preserved unchanged. This + narrows the search from the entire configuration tree to a + specific file and field. + - Intersecting a graph traversal with another filter no longer + drops the traversed components + A graph traversal combined with an intersected filter dropped + the components reached in discovery. + e.g., ...a-dependent | type=unit (the dependents of + a-dependent, intersected with type of units) returned only + a-dependent itself instead of its dependents, and git-change + traversals such as ...[HEAD~1...HEAD] | type=unit lost the + dependents of the changed units. + A component that matched both a graph expression target and a + positive filesystem or git filter was classified as + discovered before the graph traversal ran, so the traversal + never expanded from it. Terragrunt now checks graph + expression targets first, so intersecting a traversal with + another filter keeps the dependencies and dependents it + reaches. + - generate blocks now honor hcl_fmt + Terragrunt now accepts hcl_fmt on generate blocks and + preserves the setting when configurations are parsed, + written, and parsed again. This lets generated .tf, .hcl, and + .tofu files opt out of automatic HCL formatting by setting + hcl_fmt = false, matching the existing generate = { ... } + attribute-map behavior. + - Telemetry resource now honors OTEL_SERVICE_NAME and + OTEL_RESOURCE_ATTRIBUTES + Terragrunt previously hardcoded the service.name resource + attribute to terragrunt for every emitted trace and metric, + ignoring the standard OpenTelemetry environment variables. + Multiple Terragrunt invocations could not be distinguished in + an OpenTelemetry backend without an intermediate collector to + rewrite the attribute. + The resource is now composed via resource.New with + WithFromEnv() placed after Terragrunt's defaults, so + OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES are honored on + every span and metric. Per the OpenTelemetry specification, + OTEL_SERVICE_NAME takes precedence over a service.name entry + in OTEL_RESOURCE_ATTRIBUTES. The default service.name remains + terragrunt when neither variable is set. + - s3:: sources: support virtual-hosted-style URLs + s3:: source URLs using the virtual-hosted-style S3 endpoint + format were rejected: + + terraform { + source = "s3::https://my-bucket.s3.us-west-2.amazonaws.com/terraform/modules/myapp.zip" + } + + This resulted in errors like: + + ERROR downloading source url s3::https://my-bucket.s3.us-west-2.amazonaws.com/... + * URL is not a valid S3 URL + + Terragrunt now accepts every AWS S3 endpoint form, including + virtual-hosted-style URLs + (<bucket>.s3.<region>.amazonaws.com) and modern path-style + URLs (s3.<region>.amazonaws.com). + - Windows console mode is restored when Terragrunt exits + On Windows, running a Terragrunt command from Nushell could + leave the shell unable to read input afterward, with + keystrokes such as the arrow keys appearing as raw escape + sequences instead of being interpreted. + While it runs, Terragrunt reconfigures the console it shares + with the parent shell so that terminal escape sequences are + processed, but it did not put the original mode back when it + exited. PowerShell reapplies its own console settings on + every prompt and recovers on its own, so the problem surfaces + only in shells that keep the inherited mode, such as Nushell. + Terragrunt now records the console mode at startup and + restores it on exit, returning the shell to the state it was + in beforehand. + Reported in #6245. + * Documentation Updates + - Clean Markdown is available for every docs page at <url>.md + Every docs page is now served as clean Markdown at the same + URL with .md appended. For example, /getting-started/install + is also available at /getting-started/install.md. + + curl https://docs.terragrunt.com/getting-started/install.md + + The .md version contains the page content without the site + navigation or other surrounding HTML, which makes it well + suited as context for LLMs and AI tooling: it is smaller and + carries only the documentation itself. Coverage includes + every page, including the CLI command reference and the + changelog. + This complements the existing llms.txt and llms-full.txt + files by providing a per-page Markdown source. + * Experiments Added + - optional-hooks — Add experimental --no-hooks flag support for + terragrunt run + The terragrunt run command now supports an experimental + --no-hooks flag for disabling hook execution during command + runs. + The feature is gated behind the optional-hooks experiment and + skips execution of before_hook, after_hook, and error_hook + blocks when enabled. + + TG_EXPERIMENT=optional-hooks terragrunt run --no-hooks plan + + This feature is currently experimental because disabling + hooks changes Terragrunt execution semantics and may evolve + in future releases. + Using --no-hooks without enabling the optional-hooks + experiment will return an error. + - hook-context-env experiment exposes additional TG_CTX_* env + vars to hooks + Enable the new hook-context-env experiment to surface three + additional environment variables to every before_hook, + after_hook, and error_hook: + - TG_CTX_HOOK_TYPE — before_hook, after_hook, or error_hook, + identifying which lifecycle phase invoked the hook. + - TG_CTX_SOURCE — the resolved terraform source URL (CLI + --source override, else evaluated terraform.source with + source-map applied, else .). + - TG_CTX_TERRAGRUNT_DIR — the directory of the current + Terragrunt config. + + terragrunt run --all --experiment hook-context-env -- apply + + These variables make it easier to share a single hook script + across lifecycle phases and to access the unit's source and + config directory without threading them through hook + arguments. + * Experiments Updated + - cas: fallbacks now emit telemetry + When the cas experiment is enabled and a CAS operation cannot + complete, Terragrunt falls back to a slower path (the + standard download client, or a temporary clone when the + shared git store is unavailable) and keeps going. Until now + the only record of a fallback was a warning in the logs, + which made it impractical to measure how often CAS degrades + across a fleet. + Each fallback now also emits a cas_fallback telemetry event + whose reason attribute identifies the cause: init_error, + getter_error, git_store_unavailable, probe_failure, or + stack_generation_error. Operators collecting OpenTelemetry + traces or metrics from Terragrunt can count and alert on + these events to judge CAS health before relying on it by + default. + - CAS flags for the catalog command + The catalog command now accepts the --no-cas and + --cas-clone-depth flags, which were already available on run, + stack generate, and stack run. When --no-cas is set, catalog + repositories are cloned with plain Git even if the cas + experiment is enabled. --cas-clone-depth controls the git + clone --depth value the CAS uses when cloning catalog + repositories. + + terragrunt catalog --experiment cas --cas-clone-depth=-1 + + - cas — update_source_with_cas requires a literal source string + When a catalog unit, stack, or terraform block set + update_source_with_cas = true with a source that was not a + literal string, rewriting silently produced a wrong source. + Interpolation such as "../units/${local.name}" had the + interpolated portion dropped, leaving a bare prefix; a + reference such as local.foo resolved to the directory + containing the block itself. In both cases stack generation + packaged the wrong directory without any error. + Stack generation now fails with an error explaining that + update_source_with_cas requires a literal source string. + Non-literal expressions, including interpolation, function + calls, and references like local.foo, are rejected. + - cas — Malformed cas:: references fail with a clear error + A cas:: source with a malformed hash, such as cas::sha1:a, + used to fail with an opaque internal error while looking the + hash up in the store. + CAS references are now validated up front: the hash must be + lowercase hexadecimal with exactly 40 characters for sha1 or + 64 for sha256. References that don't match are rejected with + an error identifying the bad reference. + - cas — Repositories with submodules now clone correctly + Cloning a repository that contains git submodules through the + Content Addressable Store failed while ingesting the + repository: + + git_cat_file: fatal: Not a valid object name <hash> + + A submodule appears in the repository tree as a pointer to a + commit in another repository, so the object behind it cannot + be read from the repository being cloned. + The CAS now fetches each submodule from the URL registered in + .gitmodules at its pinned commit and materializes its + contents in place, including nested submodules. Relative + submodule URLs (such as ../sibling.git) are resolved against + the parent repository URL, matching git's behavior. Submodule + contents are stored and deduplicated like any other content, + so repeated clones reuse the cache. + - catalog-redesign — Failures now exit nonzero and name the + sources that failed + The redesigned catalog exited with code 0 even when it + failed: a session that ended on an unreachable repository, a + failed scaffold, or a failed copy reported success in its + exit code. Repositories that failed to load during discovery + were dropped too: the warning logged for each one was drawn + over by the full-screen interface, so a run where every + source failed showed the same "No catalog sources were + discovered" screen as a run that genuinely found nothing. + The catalog now exits nonzero when the session ends on a + failure: a discovery failure that leaves nothing to browse, a + failed scaffold, or a failed copy. Quitting a working session + still exits 0. When some sources fail to load while others + succeed, the catalog stays usable and a clean quit still + exits 0; the component list shows how many sources failed, + and the failed repositories are printed with their causes + after the catalog closes. When every source fails, the error + screen lists each failed repository instead of claiming + nothing was found, and dismissing it exits nonzero. + Running terragrunt catalog without an interactive terminal, + such as in CI, used to fail with a raw error from the + underlying TUI library: + + bubbletea: error opening TTY: bubbletea: could not open TTY: open /dev/tty: no such device or address + + It now fails immediately with an error stating that the + catalog command requires an interactive terminal. + - catalog-redesign — Scaffolding a component no longer fails + with a path-traversal error + Scaffolding a component from the catalog (pressing s) could + fail on macOS while downloading the source: + + subdirectory component contain path traversal out of the repository ++++ 180 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/terragrunt/terragrunt.changes ++++ and /work/SRC/openSUSE:Factory/.terragrunt.new.1981/terragrunt.changes Old: ---- terragrunt-1.0.7.obscpio New: ---- terragrunt-1.0.8.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ terragrunt.spec ++++++ --- /var/tmp/diff_new_pack.sCNSno/_old 2026-06-11 17:29:46.980424224 +0200 +++ /var/tmp/diff_new_pack.sCNSno/_new 2026-06-11 17:29:46.980424224 +0200 @@ -17,7 +17,7 @@ Name: terragrunt -Version: 1.0.7 +Version: 1.0.8 Release: 0 Summary: Thin wrapper for Terraform for working with multiple Terraform modules License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.sCNSno/_old 2026-06-11 17:29:47.028426237 +0200 +++ /var/tmp/diff_new_pack.sCNSno/_new 2026-06-11 17:29:47.032426405 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/gruntwork-io/terragrunt</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v1.0.7</param> + <param name="revision">v1.0.8</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.sCNSno/_old 2026-06-11 17:29:47.052427244 +0200 +++ /var/tmp/diff_new_pack.sCNSno/_new 2026-06-11 17:29:47.060427579 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/gruntwork-io/terragrunt</param> - <param name="changesrevision">5a2244e186f1b148dc234a925b1327c1abd8ecf0</param></service></servicedata> + <param name="changesrevision">929249c36dadda072b4d56ff88197fcc8e4cbd85</param></service></servicedata> (No newline at EOF) ++++++ terragrunt-1.0.7.obscpio -> terragrunt-1.0.8.obscpio ++++++ ++++ 27727 lines of diff (skipped) ++++++ terragrunt.obsinfo ++++++ --- /var/tmp/diff_new_pack.sCNSno/_old 2026-06-11 17:29:53.276688305 +0200 +++ /var/tmp/diff_new_pack.sCNSno/_new 2026-06-11 17:29:53.300689311 +0200 @@ -1,5 +1,5 @@ name: terragrunt -version: 1.0.7 -mtime: 1780323265 -commit: 5a2244e186f1b148dc234a925b1327c1abd8ecf0 +version: 1.0.8 +mtime: 1781120183 +commit: 929249c36dadda072b4d56ff88197fcc8e4cbd85 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/terragrunt/vendor.tar.gz /work/SRC/openSUSE:Factory/.terragrunt.new.1981/vendor.tar.gz differ: char 18, line 1
