Commit Graph

14 Commits

Author SHA1 Message Date
Adrien Delorme 819329228a Change back to make sure all durations are a time.Duration
It is simply the best/simplest solution and trying to prevent users from passing and integer here would be like opening a can of worms. Because:

* we cannot make mapstructure validate our duration string ( with an UnmarshalJSON func etc.)
* we cannot make mapstructure spit a string instead of a duration and packer will decode-encode-decode config.
* the hcl2 generated code asks for a string, so this will be enforced by default.
2019-10-31 16:12:07 +01:00
Adrien Delorme bf3d9841c6 Force durations to be passed a strings
Before this commit it was possible to set a duration using an integer or a float. Go's time.Duration is an int64 internally an mapstructure will take advantage of this and load the number as a int64 but `1` means one ns which is unexpected/confusing. To avoid confusion and enforce readability this forces users to pass a string with a unit for a duration; ex "56s".
2019-10-31 11:47:19 +01:00
Megan Marsh da53ac99be when using a slice of an imported field type, the Underlying still returned the slice rather than the element type. 2019-10-23 15:08:14 -07:00
Adrien Delorme f6af5ecf07 Update mapstructure-to-hcl2.go
make log/usage prompt prefix coherent
2019-10-16 10:49:20 +02:00
Adrien Delorme 9dac7908a5 Update mapstructure-to-hcl2.go
better comments
2019-10-15 15:25:01 +02:00
Adrien Delorme 078ba7c8c3 commit old code generation tool
for history
2019-10-15 12:56:42 +02:00
Adrien Delorme 0eb9090dcf Create mapstructure-to-hcl2.go
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.
2019-10-15 12:56:42 +02:00
Adrien Delorme 0fe48691e8 ignore doc fields containing `TODO` 2019-08-27 13:55:00 +02:00
Adrien Delorme ec52f36af1 docs: escape pointer (*) parameters `*` => `\*`
so that we don't get weird italics there and there
2019-08-27 13:30:50 +02:00
Adrien Delorme 349c3ef74b cmd/struct-markdown: also generate docs from header comments of a struct
& generate it for ISOConfig
2019-06-12 16:25:08 +02:00
Adrien Delorme 4ae10f08b2 docs: generate builders partials from struct comments 2019-06-06 17:34:17 +02:00
Adrien Delorme f1917edd34 generate the comments for config struct of builders scraping doc website 2019-06-05 16:42:17 +02:00
Adrien Delorme c7808aaf1f do things locally 2019-06-05 16:41:20 +02:00
Adrien Delorme 31b66a63b1 scrape builder docs from https://www.packer.io/docs/
in order to get what is required and what is not.
2019-06-05 16:41:20 +02:00