From eaf63e3bb5f493f392887918f61ec0e151a22413 Mon Sep 17 00:00:00 2001 From: Adrien Delorme Date: Mon, 6 Jul 2020 16:07:29 +0200 Subject: [PATCH] pass source name from local source name too --- hcl2template/types.packer_config.go | 7 ++----- hcl2template/types.source.go | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index b40df364b..82e4374f3 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -369,11 +369,8 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packer.Build } variables := map[string]cty.Value{ - sourcesAccessor: cty.ObjectVal(map[string]cty.Value{ - "type": cty.StringVal(src.Type), - "name": cty.StringVal(src.Name), - }), - buildAccessor: cty.ObjectVal(unknownBuildValues), + sourcesAccessor: cty.ObjectVal(src.ctyValues()), + buildAccessor: cty.ObjectVal(unknownBuildValues), } provisioners, moreDiags := cfg.getCoreBuildProvisioners(src, build.ProvisionerBlocks, cfg.EvalContext(variables)) diff --git a/hcl2template/types.source.go b/hcl2template/types.source.go index 51f275aa0..076d83d1b 100644 --- a/hcl2template/types.source.go +++ b/hcl2template/types.source.go @@ -7,6 +7,7 @@ import ( "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" "github.com/hashicorp/packer/packer" + "github.com/zclconf/go-cty/cty" ) // SourceBlock references an HCL 'source' block. @@ -26,11 +27,23 @@ type SourceBlock struct { LocalName string } -func (b *SourceBlock) String() string { +func (b *SourceBlock) name() string { if b.LocalName != "" { - return fmt.Sprintf("%s.%s", b.Type, b.LocalName) + return b.LocalName + } + return b.Name +} + +func (b *SourceBlock) String() string { + return fmt.Sprintf("%s.%s", b.Type, b.name()) +} + +// EvalContext adds the values of the source to the passed eval context. +func (b *SourceBlock) ctyValues() map[string]cty.Value { + return map[string]cty.Value{ + "type": cty.StringVal(b.Type), + "name": cty.StringVal(b.name()), } - return fmt.Sprintf("%s.%s", b.Type, b.Name) } // decodeBuildSource reads a used source block from a build: