packer: Add description to top-level template [GH-658]

This commit is contained in:
Mitchell Hashimoto 2013-12-11 13:43:43 -08:00
parent fe22308a2d
commit 8e617d006b
2 changed files with 23 additions and 0 deletions

View File

@ -16,6 +16,7 @@ import (
// "interface{}" pointers since we actually don't know what their contents // "interface{}" pointers since we actually don't know what their contents
// are until we read the "type" field. // are until we read the "type" field.
type rawTemplate struct { type rawTemplate struct {
Description string
Variables map[string]interface{} Variables map[string]interface{}
Builders []map[string]interface{} Builders []map[string]interface{}
Hooks map[string][]string Hooks map[string][]string
@ -26,6 +27,7 @@ type rawTemplate struct {
// The Template struct represents a parsed template, parsed into the most // The Template struct represents a parsed template, parsed into the most
// completed form it can be without additional processing by the caller. // completed form it can be without additional processing by the caller.
type Template struct { type Template struct {
Description string
Variables map[string]RawVariable Variables map[string]RawVariable
Builders map[string]RawBuilderConfig Builders map[string]RawBuilderConfig
Hooks map[string][]string Hooks map[string][]string
@ -115,6 +117,7 @@ func ParseTemplate(data []byte) (t *Template, err error) {
} }
t = &Template{} t = &Template{}
t.Description = rawTpl.Description
t.Variables = make(map[string]RawVariable) t.Variables = make(map[string]RawVariable)
t.Builders = make(map[string]RawBuilderConfig) t.Builders = make(map[string]RawBuilderConfig)
t.Hooks = rawTpl.Hooks t.Hooks = rawTpl.Hooks

View File

@ -111,6 +111,26 @@ func TestParseTemplate_Basic(t *testing.T) {
} }
} }
func TestParseTemplate_Description(t *testing.T) {
data := `
{
"description": "Foo",
"builders": [{"type": "something"}]
}
`
result, err := ParseTemplate([]byte(data))
if err != nil {
t.Fatalf("err: %s", err)
}
if result == nil {
t.Fatal("should have result")
}
if result.Description != "Foo" {
t.Fatalf("bad: %#v", result.Description)
}
}
func TestParseTemplate_Invalid(t *testing.T) { func TestParseTemplate_Invalid(t *testing.T) {
// Note there is an extra comma below for a purposeful // Note there is an extra comma below for a purposeful
// syntax error in the JSON. // syntax error in the JSON.