Update `overrides` section behavior in imports and inline @aknysh (#1122)
what
- Update
overrides
section behavior in imports and inline - Add acceptance tests for the
overrides
section for many scenarios (overrides
at the stack level, team level, inline and in imports) - Update docs
- Update
Go
to1.24.0
and fix some issues in the code (1.24.0
is more strict about theGo
format functions always requiring theformat
as the first argument) - Add unit tests
why
- Importing the overrides did not cover all possible scenarios (e.g. when importing the
overrides
for the imported components, the inlineoverrides
for the same stack were not taken into account). This PR fixes this and adds acceptance tests for all scenarios - Update the Share Data Between Components doc to describe how the
!terraform.output
YAML function can (and should be) used to to read the outputs (remote state) of components directly in Atmos stack manifests
Downgrade Lint Errors to Warnings @osterman (#1132)
What
- Downgrade some common lint errors to warnings.
- Change reviewdog to only report annotations
- Add a
lint-failures
label if it failed linting
Why
- Strict enforcement significantly increase scope on some PRs
- We need incremental improvements to code quality rather than blocking progress.
- Warnings should still be addressed, but they shouldn't block PR merges, if necessary
- Instead of lowering the bar, we keep the bar high informing developers of best practices.
Warn on Excessive Function Returns & `//nolint` Usage @osterman (#1131)
## What - Warn when functions return more than 2 values (we should be returning objects). - Warn when using lint ignore (`//nolint`), so that we draw attention to it.Why
- Objects have named properties, making it easier to understand what everything is. We've seen functions returning 7+ values, which is impractical and error-prone.
- Many times when
//nolint
is used, there’s a better way to address the issue:- The lint rule might be too strict.
- The developer might not realize there's a straightforward solution that avoids ignoring the rule.
- The rule may have been misunderstood.
- The ignore might have been intended as temporary but was never revisited.