✨ Store comments in the Template structure
Signed-off-by: Brendan Devenney <brendan@devenney.io>
This commit is contained in:
parent
4da79a8837
commit
d8793e3f85
|
@ -24,6 +24,7 @@ type rawTemplate struct {
|
||||||
Description string
|
Description string
|
||||||
|
|
||||||
Builders []map[string]interface{}
|
Builders []map[string]interface{}
|
||||||
|
Comments map[string]string
|
||||||
Push map[string]interface{}
|
Push map[string]interface{}
|
||||||
PostProcessors []interface{} `mapstructure:"post-processors"`
|
PostProcessors []interface{} `mapstructure:"post-processors"`
|
||||||
Provisioners []map[string]interface{}
|
Provisioners []map[string]interface{}
|
||||||
|
@ -44,6 +45,15 @@ func (r *rawTemplate) Template() (*Template, error) {
|
||||||
result.MinVersion = r.MinVersion
|
result.MinVersion = r.MinVersion
|
||||||
result.RawContents = r.RawContents
|
result.RawContents = r.RawContents
|
||||||
|
|
||||||
|
// Gather the comments
|
||||||
|
if len(r.Comments) > 0 {
|
||||||
|
result.Comments = make(map[string]string, len(r.Comments))
|
||||||
|
|
||||||
|
for k, v := range r.Comments {
|
||||||
|
result.Comments[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Gather the variables
|
// Gather the variables
|
||||||
if len(r.Variables) > 0 {
|
if len(r.Variables) > 0 {
|
||||||
result.Variables = make(map[string]*Variable, len(r.Variables))
|
result.Variables = make(map[string]*Variable, len(r.Variables))
|
||||||
|
@ -304,9 +314,22 @@ func Parse(r io.Reader) (*Template, error) {
|
||||||
// Build an error if there are unused root level keys
|
// Build an error if there are unused root level keys
|
||||||
if len(md.Unused) > 0 {
|
if len(md.Unused) > 0 {
|
||||||
sort.Strings(md.Unused)
|
sort.Strings(md.Unused)
|
||||||
|
|
||||||
|
unusedMap, ok := raw.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("Failed to convert unused root level keys to map")
|
||||||
|
}
|
||||||
|
|
||||||
for _, unused := range md.Unused {
|
for _, unused := range md.Unused {
|
||||||
// Ignore keys starting with '_' as comments
|
// Ignore keys starting with '_' as comments
|
||||||
if unused[0] == '_' {
|
if unused[0] == '_' {
|
||||||
|
if rawTpl.Comments == nil {
|
||||||
|
rawTpl.Comments = make(map[string]string)
|
||||||
|
}
|
||||||
|
rawTpl.Comments[unused], ok = unusedMap[unused].(string)
|
||||||
|
if !ok {
|
||||||
|
return nil, fmt.Errorf("Failed to cast root level comment key to string")
|
||||||
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -316,6 +316,9 @@ func TestParse(t *testing.T) {
|
||||||
Type: "something",
|
Type: "something",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Comments: map[string]string{
|
||||||
|
"_info": "foo",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
false,
|
false,
|
||||||
},
|
},
|
||||||
|
|
|
@ -18,6 +18,7 @@ type Template struct {
|
||||||
Description string
|
Description string
|
||||||
MinVersion string
|
MinVersion string
|
||||||
|
|
||||||
|
Comments map[string]string
|
||||||
Variables map[string]*Variable
|
Variables map[string]*Variable
|
||||||
SensitiveVariables []*Variable
|
SensitiveVariables []*Variable
|
||||||
Builders map[string]*Builder
|
Builders map[string]*Builder
|
||||||
|
|
Loading…
Reference in New Issue