github cloudposse/atmos v1.204.1-rc.2

pre-releaseone hour ago
Enable make readme target to use atmos docs generate @osterman (#1988) ## what
  • Switched make readme from a disabled stub to using the atmos docs generate readme command
  • README.md is now regenerated from README.yaml and remote template when running make readme

why

The atmos docs generate readme command is fully implemented and working. Enabling the makefile target allows developers to regenerate the README.md following the documented workflow (edit README.yaml → run make readme).

references

Implements the intended workflow where make readme generates README.md from data sources and templates, consistent with the modern docs generation infrastructure in Atmos.

Summary by CodeRabbit

  • Documentation

    • Expanded README introduction with a fuller description of Atmos and cloud/tooling use cases.
    • Moved/added Developer Tools guidance into the development docs (duplicated content present) and removed it from the README.
    • Updated copyright year to 2026.
  • Chores

    • Readme generation now runs as part of the build process.

✏️ Tip: You can customize this high-level summary in your review settings.

fix: Conditionally set GOFLAGS for git worktrees @osterman (#1986) ## what

Automatically detect git worktrees and set GOFLAGS="-buildvcs=false" to prevent build failures. In worktrees, the .git directory is in a different location (.git/worktrees/<name>), causing the VCS build metadata to fail unless explicitly disabled.

why

Developers using git worktrees were experiencing build failures or unexpected behavior. This change makes the build process worktree-aware without affecting non-worktree repositories.

references

Related to git worktree development workflow improvements.

Summary by CodeRabbit

Release Notes

  • Chores
    • Improved build system configuration for enhanced compatibility with development environments.

✏️ Tip: You can customize this high-level summary in your review settings.

feat: Packer directory-based template support and improvements @aknysh (#1982) ## what
  • Directory-based Packer templates: Atmos now defaults the template to . (current directory) when not specified, allowing Packer to load all *.pkr.hcl files from the component directory automatically. This aligns with HashiCorp's recommended multi-file configuration patterns.
  • Configuration validation: Added checkPackerConfig() validation to both ExecutePacker and ExecutePackerOutput functions, ensuring Packer base path is configured before execution.
  • Cleanup file leak fix: Implemented proper defer pattern for variable file cleanup to prevent file leaks on early errors.
  • Abstract and locked component protection: Added checks to prevent packer build on abstract (metadata.type: abstract) and locked (metadata.locked: true) components while allowing read-only commands like validate and inspect.
  • Error message consistency: Standardized error message quoting style across Packer files (using single quotes consistently).
  • New ErrMissingPackerBasePath error: Added dedicated error type for missing Packer configuration.
  • Comprehensive troubleshooting documentation: Added new troubleshooting guide covering common Packer issues and solutions.
  • Improved godoc comments: Added comprehensive documentation to PackerFlags struct and its fields.
  • Test coverage improvements:
    • Added TestExecutePacker_Fmt for the fmt command
    • Added TestExecutePacker_ComponentMetadata for abstract/locked component handling
    • Added TestCheckPackerConfig for configuration validation
    • Added captureStdout test helper to reduce code duplication
    • Added test for missing Packer base path in ExecutePackerOutput

why

  • Fixes GitHub issue #1937: Users following HashiCorp's best practice of organizing Packer configurations across multiple files (variables.pkr.hcl, main.pkr.hcl, etc.) encountered "Unsupported attribute" errors because Atmos only loaded a single template file.
  • Improved reliability: The cleanup fix and configuration validation prevent resource leaks and provide better error messages.
  • Consistency with Terraform: The abstract/locked component protection matches the behavior already implemented for Terraform components.
  • Better developer experience: The troubleshooting documentation and improved error messages help users resolve issues faster.

references

Summary of Changes

New Features

  • Directory-based template loading (default to . when no template specified)
  • Multi-file Packer component support

Bug Fixes

  • Variable file cleanup on early errors (defer pattern)
  • Configuration validation before execution

Improvements

  • Abstract/locked component protection for packer build
  • Standardized error messages
  • Comprehensive troubleshooting documentation
  • Test coverage expansion
  • Code documentation (godoc comments)

Test Plan

  • All existing Packer tests pass
  • New tests for directory mode, fmt command, metadata handling
  • Configuration validation tests
  • Linter passes with 0 issues

Summary by CodeRabbit

Release Notes

  • New Features

    • Packer now defaults to directory mode, automatically loading all *.pkr.hcl files from the component directory without requiring explicit template configuration.
    • Template parameter is now optional; use --template flag or settings.packer.template to override.
  • Documentation

    • Added comprehensive Packer troubleshooting guide.
    • Enhanced documentation with directory mode usage examples and best practices.
    • Added blog article explaining directory-based template support.
  • Tests

    • Added extensive integration and unit test coverage for Packer commands.

✏️ Tip: You can customize this high-level summary in your review settings.

🚀 Enhancements

Fix double-hyphen (--) parsing in CLI commands @aknysh (#1990) ## what
  • Fixed issue where args after -- (POSIX end-of-options marker) were incorrectly parsed by Cobra/pflag
  • The stack flag value was being corrupted when commands included -- followed by terraform flags like -consolidate-warnings=false
  • Added named constant endOfOptionsMarker to replace repeated "--" string literal (linting fix)

why

  • Commands like atmos terraform plan vpc --stack nonprod -- -consolidate-warnings=false were failing with corrupted stack values
  • The stack value would become olidate-warnings=false instead of nonprod because pflag was incorrectly parsing the -consolidate-warnings=false argument after --
  • Per POSIX convention, everything after -- should be passed through to the subprocess without being parsed by the CLI

references

Summary by CodeRabbit

  • Bug Fixes

    • Corrected command-line parsing so the "--" end-of-options marker properly isolates subsequent flags/args and prevents corruption of preceding values.
  • Tests

    • Added comprehensive tests and scenario fixtures covering various "--" usages to verify parsing, precedence, and edge cases; updated CLI error/help snapshots to reflect added workflows.
  • Chores

    • Bumped several Go module dependencies to newer patch/minor releases.

✏️ Tip: You can customize this high-level summary in your review settings.

Fix component menu to filter abstract and disabled components @osterman (#1977) ## what
  • Interactive component selection menu now filters out abstract components (metadata.type: abstract)
  • Disabled components (metadata.enabled: false) are hidden from interactive prompts and tab completion
  • Stack-scoped filtering: only components in the specified stack appear when --stack is provided
  • Added helper functions isComponentDeployable() and filterDeployableComponents() to centralize filtering logic
  • Updated PromptForComponent() signature to accept stack parameter for stack-aware filtering

why

Previously, users would see all components from all stacks in the interactive menu, including abstract base components that serve as templates. This was confusing because abstract components cannot be deployed. The fix ensures only deployable, valid components appear in interactive prompts and shell completion, improving user experience and preventing errors.

references

Fixes component selection menu to correctly filter out non-deployable components.

Summary by CodeRabbit

  • New Features

    • Interactive component prompts and tab completion now filter by the specified stack and show only deployable components (excludes abstract/disabled)
  • Improvements

    • Prompt flow now asks for and validates the stack earlier, enabling stack-scoped component filtering and faster validation when a stack is supplied
  • Documentation

    • Added a blog post documenting component selection filtering behavior
  • Tests

    • Expanded tests covering deployability filtering, prompting, completions, and related utilities

✏️ Tip: You can customize this high-level summary in your review settings.

refactor: Remove error returns from ui.* functions @osterman (#1980) ## what
  • Changed ui.Success, ui.Error, ui.Warning, ui.Info, ui.Write, ui.Markdown, and related functions to not return errors
  • Eliminated 210+ instances of the "dog sled" pattern (_ = ui.*) across the codebase
  • Functions now log write errors internally via log.Debug() instead of returning them

why

Errors from stderr writes are not meaningful for callers to handle. The io/Write API may fail for reasons beyond the caller's control (terminal buffering, redirect failures, etc.), but there's nothing actionable the caller can do. This matches the log.* pattern which already doesn't return errors.

references

Removes unnecessary error handling noise while maintaining the same output behavior.

Summary by CodeRabbit

  • Refactor

    • UI messaging made more resilient: status, warnings, and formatted output now log write failures internally instead of propagating errors, ensuring consistent user-facing messages.
  • Chores

    • Updated example build image version and underlying formatter/dependency updates.

✏️ Tip: You can customize this high-level summary in your review settings.

Don't miss a new atmos release

NewReleases is sending notifications on new releases.