Skip to content

Commit c4d570e

Browse files
committed
Issue #273 - Template refactor to resolve suggestions in PR #341
1 parent de54c76 commit c4d570e

File tree

7 files changed

+31
-33
lines changed

7 files changed

+31
-33
lines changed

common/decorator_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Resources:
2929
err := yaml.Unmarshal([]byte(overridesYaml), overrides)
3030
assert.Nil(err)
3131

32-
templateBody, err := templates.GetAsset(TemplateBucket, templates.AddData(nil))
32+
templateBody, err := templates.GetAsset(TemplateBucket, templates.ExecuteTemplate(nil))
3333
assert.Nil(err)
3434
assert.NotNil(templateBody)
3535

provider/aws/cloudformation.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ func (cfnMgr *cloudformationStackManager) UpsertStack(stackName string, template
287287
}
288288

289289
// load the template
290-
templateBody, err := templates.GetAsset(templateName, templates.AddData(templateData),
290+
templateBody, err := templates.GetAsset(templateName, templates.ExecuteTemplate(templateData),
291291
templates.DecorateTemplate(cfnMgr.extensionsManager, stackName))
292292
templateBodyBytes := bytes.NewBufferString(templateBody)
293293

provider/aws/cloudformation_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ func mockNilExtensionManager() *mockedExtensionsManager {
565565

566566
func mockTemplateBody(extMgr *mockedExtensionsManager, stackName string, templateName string, templateData interface{}) *string {
567567

568-
templateBody, _ := templates.GetAsset(templateName, templates.AddData(templateData),
568+
templateBody, _ := templates.GetAsset(templateName, templates.ExecuteTemplate(templateData),
569569
templates.DecorateTemplate(extMgr, stackName))
570570

571571
return aws.String(templateBody)

templates/template.go

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,77 +8,76 @@ import (
88
"io"
99
"text/template"
1010

11-
"github.com/aws/aws-sdk-go/aws"
1211
"github.com/gobuffalo/packr"
1312
)
1413

1514
// GetAsset reads an asset from "disk" into a string
16-
func GetAsset(assetName string, options ...func(string, *string) error) (string, error) {
15+
func GetAsset(assetName string, options ...AssetOption) (string, error) {
1716
box := packr.NewBox("./assets")
1817

1918
asset, err := box.MustString(assetName)
2019
if err != nil {
2120
return "", err
2221
}
23-
assetRef := aws.String(asset)
2422

2523
for _, option := range options {
26-
if err := option(assetName, assetRef); err != nil {
24+
if asset, err = option(assetName, asset); err != nil {
2725
return "", err
2826
}
2927
}
3028

31-
return *assetRef, nil
29+
return asset, nil
3230
}
3331

34-
// AddData adds the data parameter to a text/template
35-
func AddData(data interface{}) func(string, *string) error {
36-
return func(assetName string, asset *string) error {
32+
// ExecuteTemplate executes the data parameter on a text/template
33+
func ExecuteTemplate(data interface{}) AssetOption {
34+
return func(assetName string, asset string) (string, error) {
3735

38-
tmpl, err := template.New(assetName).Parse(*asset)
36+
tmpl, err := template.New(assetName).Parse(asset)
3937
if err != nil {
40-
return err
38+
return asset, err
4139
}
4240

4341
buf := new(bytes.Buffer)
4442
bufWriter := bufio.NewWriter(buf)
4543

4644
err = tmpl.Execute(bufWriter, data)
4745
if err != nil {
48-
return err
46+
return asset, err
4947
}
5048

5149
bufWriter.Flush()
5250

5351
templateBodyBytes := new(bytes.Buffer)
5452
_, err = templateBodyBytes.ReadFrom(buf)
5553
if err != nil {
56-
return err
54+
return asset, err
5755
}
58-
*asset = templateBodyBytes.String()
5956

60-
return nil
57+
return templateBodyBytes.String(), nil
6158
}
6259
}
6360

6461
// DecorateTemplate uses an ExtensionImpl to inject data into an extension
65-
func DecorateTemplate(extMgr decoratorImpl,
66-
stackName string) func(string, *string) error {
67-
return func(assetName string, asset *string) error {
68-
assetBuf := bytes.NewBufferString(*asset)
62+
func DecorateTemplate(extMgr StackTemplateDecorator,
63+
stackName string) AssetOption {
64+
return func(assetName string, asset string) (string, error) {
65+
assetBuf := bytes.NewBufferString(asset)
6966
if _, err := extMgr.DecorateStackTemplate(assetName, stackName, assetBuf); err != nil {
70-
return err
67+
return "", err
7168
}
7269
templateBodyBytes := new(bytes.Buffer)
7370
if _, err := templateBodyBytes.ReadFrom(assetBuf); err != nil {
74-
return err
71+
return "", err
7572
}
76-
*asset = templateBodyBytes.String()
77-
return nil
73+
return templateBodyBytes.String(), nil
7874
}
7975
}
8076

81-
// stub for decorate template struct to avoid circular dependencies
82-
type decoratorImpl interface {
77+
// AssetOption describes the method signature for manipulating loaded assets
78+
type AssetOption func(string, string) (string, error)
79+
80+
// StackTemplateDecorator is a stub for decorate template struct to avoid circular dependencies
81+
type StackTemplateDecorator interface {
8382
DecorateStackTemplate(assetName string, stackName string, templateBody io.Reader) (io.Reader, error)
8483
}

templates/template_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func TestNewTemplate_assets(t *testing.T) {
5858
continue
5959
}
6060

61-
templateBody, err := GetAsset(templateName, AddData(nil))
61+
templateBody, err := GetAsset(templateName, ExecuteTemplate(nil))
6262

6363
assert.Nil(err, templateName)
6464
assert.NotNil(templateBody, templateName)
@@ -81,12 +81,11 @@ func TestNewTemplate_assets(t *testing.T) {
8181
}
8282
assert.Fail(err.Error(), templateName)
8383
}
84-
8584
}
8685
}
8786
}
8887

89-
func TestAddData(t *testing.T) {
88+
func TestExecuteTemplate(t *testing.T) {
9089
assert := assert.New(t)
9190

9291
sessOptions := session.Options{SharedConfigState: session.SharedConfigEnable}
@@ -95,7 +94,7 @@ func TestAddData(t *testing.T) {
9594

9695
svc := cloudformation.New(sess)
9796

98-
templateBody, err := GetAsset(common.TemplateServiceEC2, AddData(nil))
97+
templateBody, err := GetAsset(common.TemplateServiceEC2, ExecuteTemplate(nil))
9998

10099
assert.NotNil(templateBody)
101100
assert.NotEmpty(templateBody)

workflows/config_init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func (workflow *configWorkflow) configInitialize(config *common.Config, createEn
7878

7979
// write buildspec
8080
buildspec, err := templates.GetAsset(common.TemplateBuildspec,
81-
templates.AddData(nil))
81+
templates.ExecuteTemplate(nil))
8282
if err != nil {
8383
return err
8484
}

workflows/pipeline_upsert.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ func PipelineParams(workflow *pipelineWorkflow, namespace string, params map[str
269269

270270
// get default buildspec
271271
buildspec, err := templates.GetAsset(common.TemplateBuildspec,
272-
templates.AddData(nil))
272+
templates.ExecuteTemplate(nil))
273273
if err != nil {
274274
return nil, err
275275
}

0 commit comments

Comments
 (0)