Package hcl2template defines code to parse hcl2 template files correctly.
In order to configure a packer builder,provisioner,communicator and post
processor.
Checkout the files in testdata/complete/ to see what a packer config could
look like.
mapstructure-to-hcl2 fills the gaps between hcl2 and mapstructure for Packer
By generating a struct that the HCL2 ecosystem understands making use of
mapstructure tags.
Packer heavily uses the mapstructure decoding library to load/parse user
config files. Packer now needs to move to HCL2.
Here are a few differences/gaps betweens hcl2 and mapstructure:
* in HCL2 all basic struct fields (string/int/struct) that are not pointers
are required ( must be set ). In mapstructure everything is optional.
* mapstructure allows to 'squash' fields
(ex: Field CommonStructType `mapstructure:",squash"`) this allows to
decorate structs and reuse configuration code. HCL2 parsing libs don't have
anything similar.
mapstructure-to-hcl2 will parse Packer's config files and generate the HCL2
compliant code that will allow to not change any of the current builders in
order to move to HCL2 to softly move to HCL2.
* make CustomerEncryptionKey our own type so that it can be hcl2 generated
* make Account setting unexported so that it doesn't temper with HCL2 generation ( the field is set a bit later after processing )