Skip to main content

Project Structure

Detailed overview of tf2report's codebase organization.

Directory Layout

tf2report/
├── cmd/
│ └── tf2report/ # CLI application
├── pkg/
│ ├── config/ # Configuration management
│ ├── report/ # Report formatters
│ └── terraform/ # Terraform plan parsing
├── docs/ # Documentation
├── examples/ # Sample Terraform plans
├── .github/
│ ├── workflows/ # CI/CD pipelines
│ └── instructions/ # Coding guidelines
├── go.mod # Go module definition
├── go.sum # Dependency checksums
├── Makefile # Build automation
└── README.md # Main documentation

Package Overview

cmd/tf2report

CLI application entry point.

Key files:

  • main.go - Application entry, CLI setup, command handling

Responsibilities:

  • Parse command-line arguments
  • Load configuration
  • Initialize components
  • Execute report generation
  • Handle errors and exit codes

pkg/config

Configuration loading and management.

Key files:

  • types.go - Configuration struct definitions
  • loader.go - Configuration file loading logic

Responsibilities:

  • Load YAML configuration files
  • Merge CLI flags with config
  • Validate configuration
  • Provide defaults

pkg/terraform

Terraform plan parsing and analysis.

Key files:

  • types.go - Terraform plan data structures
  • parser.go - Plan parsing and filtering logic

Responsibilities:

  • Parse Terraform plan JSON
  • Extract resource changes
  • Filter by type and action
  • Generate summary statistics

pkg/report

Report generation and formatting.

Key files:

  • formatter.go - Formatter interface and factory
  • markdown.go - Markdown formatter
  • text.go - Plain text formatter
  • json.go - JSON formatter

Responsibilities:

  • Format reports in multiple formats
  • Generate human-readable output
  • Structure data for machines

Data Flow

terraform.tfplan.json

[pkg/terraform/Parser]

Plan struct

[pkg/terraform/NewSummary]

Summary struct

[pkg/report/Formatter]

Formatted output

Key Concepts

Plan Parsing

Terraform plan JSON → Go structs representing resources and changes.

Filtering

Apply resource type and action filters to narrow results.

Summary Generation

Aggregate change statistics by type and action.

Formatting

Convert structured data to user-friendly formats.

Configuration Flow

1. Load defaults
2. Load config file (YAML)
3. Apply environment variables
4. Apply CLI flags
5. Validate final config

Next Steps