hclalign
is a Command Line Interface (CLI) application designed to organize and align HCL (HashiCorp Configuration Language) files.
- Flexible File Selection: Use glob patterns to target specific files or groups of files for alignment.
- Customizable Field Order: Define your preferred order of variable block fields to maintain a consistent format across HCL files.
- Concurrent Processing: Leverages Go's concurrency capabilities to process files in parallel, optimizing performance on multicore systems.
- Debugging Support: Includes a debug mode for additional logging, useful for troubleshooting and development.
You must have Go installed on your system to build and run hclalign
.
Clone the hclalign
repository and use the Makefile to build the project:
git clone https://github.com/oferchen/hclalign.git
cd hclalign
make init
make tidy
make build
This will compile the project, creating an executable named hclalign
in the current directory.
To get started with hclalign
, here are some Makefile commands you might find useful:
- Build:
make build
compiles the project into an executable. - Run:
make run
builds and executeshclalign
. - Dependencies:
make deps
downloads the required project dependencies. - Tidy:
make tidy
cleans and verifies the module dependencies. - Test:
make test
runs all configured tests. - Clean:
make clean
removes temporary files and the executable to clean up the project space. - Init:
make init
initializes a new Go module for the project. - Help:
make help
displays available Makefile commands.
Execute hclalign
with your target directory or file and optional flags for criteria and order:
./hclalign [target file or directory] --criteria "*.tf,*.hcl" --order "description,type,default,sensitive,nullable,validation"
--criteria, -c
: Glob patterns for selecting files (default:*.tf
).--order, -o
: Specify the order of variable block fields (default:description,type,default,sensitive,nullable,validation
).
Before hclalign
, a Terraform variable file might look like this:
variable "instance_type" {
type = string
default = "t2.micro"
description = "EC2 instance type"
}
variable "instance_count" {
type = number
default = 1
description = "Number of instances to launch"
}
variable "ami" {
type = string
default = "ami-0c94855ba95c71c99"
description = "AMI to use for the instances"
}
After running hclalign
, the file would be reorganized for improved clarity:
variable "instance_type" {
description = "EC2 instance type"
type = string
default = "t2.micro"
}
variable "instance_count" {
description = "Number of instances to launch"
type = number
default = 1
}
variable "ami" {
description = "AMI to use for the instances"
type = string
default = "ami-0c94855ba95c71c99"
}
Contributions to hclalign
are welcome! Feel free to fork the repository, submit pull requests, or open issues for any bugs, feature suggestions, or improvements.