Skip to content

boltops-tools/hcl_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HclParser

Parse HCL files. The scope of this library is to only handle variables.tf and backend.tf files, as that's what's needed for Terraspace currently.

Usage

require "hcl_parser"
code =<<EOL
variable "project" {
  description = "The name of the GCP Project"
  default     = "test"
  type        = "string"
}
variable "name_prefix" {
  type        = "string"
}
EOL

parser = HclParser::Loader.new(code)
parser.load
# Returns =>
#
# {"variable"=>
#   {"project"=>
#     {"description"=>"The name of project",
#      "default"=>"test",
#      "type"=>"string"},
#    "name_prefix"=>{"type"=>"string"}}}

Installation

gem 'hcl_parser'

Notes

  • Tried a few different Ruby HCL parsers: hcl-checker, hcl-rb, rhcl, ruby-hcl. They all seem to have one issue or another.
  • This library preprocesses the text fed to the parser to workaround the parser issues. It's a workaround.
  • Able to handle simple variable types and most complex types.
  • Not able to handle multi-line complex variable types. There's a spec to document this.
  • Will have to fix one of these parsers or write a new one.
  • Open to PRs to help.