template: allow _ prefix to root level keys for comments [GH-2066]
This commit is contained in:
parent
f1cef0baae
commit
facbb6577d
@ -291,11 +291,16 @@ func Parse(r io.Reader) (*Template, error) {
|
|||||||
if len(md.Unused) > 0 {
|
if len(md.Unused) > 0 {
|
||||||
sort.Strings(md.Unused)
|
sort.Strings(md.Unused)
|
||||||
for _, unused := range md.Unused {
|
for _, unused := range md.Unused {
|
||||||
|
// Ignore keys starting with '_' as comments
|
||||||
|
if unused[0] == '_' {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
err = multierror.Append(err, fmt.Errorf(
|
err = multierror.Append(err, fmt.Errorf(
|
||||||
"Unknown root level key in template: '%s'", unused))
|
"Unknown root level key in template: '%s'", unused))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Return early for these errors
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,6 +303,19 @@ func TestParse(t *testing.T) {
|
|||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"parse-comment.json",
|
||||||
|
&Template{
|
||||||
|
Builders: map[string]*Builder{
|
||||||
|
"something": &Builder{
|
||||||
|
Name: "something",
|
||||||
|
Type: "something",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
|
4
template/test-fixtures/parse-comment.json
Normal file
4
template/test-fixtures/parse-comment.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"_info": "foo",
|
||||||
|
"builders": [{"type": "something"}]
|
||||||
|
}
|
@ -58,6 +58,22 @@ Along with each key, it is noted whether it is required or not.
|
|||||||
For more information on how to define and use user variables, read the
|
For more information on how to define and use user variables, read the
|
||||||
sub-section on [user variables in templates](/docs/templates/user-variables.html).
|
sub-section on [user variables in templates](/docs/templates/user-variables.html).
|
||||||
|
|
||||||
|
## Comments
|
||||||
|
|
||||||
|
JSON doesn't support comments and Packer reports unknown keys as validation
|
||||||
|
errors. If you'd like to comment your template, you can prefix a _root level_
|
||||||
|
key with an underscore. Example:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
{
|
||||||
|
"_comment": "This is a comment",
|
||||||
|
"builders": [{}]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Important:** Only _root level_ keys can be underscore prefixed. Keys within
|
||||||
|
builders, provisioners, etc. will still result in validation errors.
|
||||||
|
|
||||||
## Example Template
|
## Example Template
|
||||||
|
|
||||||
Below is an example of a basic template that is nearly fully functional. It is just
|
Below is an example of a basic template that is nearly fully functional. It is just
|
||||||
|
Loading…
x
Reference in New Issue
Block a user