Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
aknysh committed May 9, 2024
1 parent 279d107 commit a003e98
Show file tree
Hide file tree
Showing 12 changed files with 50 additions and 119 deletions.
12 changes: 1 addition & 11 deletions pkg/atlantis/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/aws/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/component/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/describe/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/generate/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
13 changes: 6 additions & 7 deletions pkg/schema/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,12 @@ type Templates struct {
}

type TemplatesSettings struct {
Enabled bool `yaml:"enabled" json:"enabled" mapstructure:"enabled"`
Sprig TemplatesSettingsSprig `yaml:"sprig" json:"sprig" mapstructure:"sprig"`
Gomplate TemplatesSettingsGomplate `yaml:"gomplate" json:"gomplate" mapstructure:"gomplate"`
LeftDelimiter string `yaml:"left_delimiter,omitempty" json:"left_delimiter,omitempty" mapstructure:"left_delimiter"`
RightDelimiter string `yaml:"right_delimiter,omitempty" json:"right_delimiter,omitempty" mapstructure:"right_delimiter"`
Evaluations int `yaml:"evaluations,omitempty" json:"evaluations,omitempty" mapstructure:"evaluations"`
Env map[string]string `yaml:"env,omitempty" json:"env,omitempty" mapstructure:"env"`
Enabled bool `yaml:"enabled" json:"enabled" mapstructure:"enabled"`
Sprig TemplatesSettingsSprig `yaml:"sprig" json:"sprig" mapstructure:"sprig"`
Gomplate TemplatesSettingsGomplate `yaml:"gomplate" json:"gomplate" mapstructure:"gomplate"`
Delimiters []string `yaml:"delimiters,omitempty" json:"delimiters,omitempty" mapstructure:"delimiters"`
Evaluations int `yaml:"evaluations,omitempty" json:"evaluations,omitempty" mapstructure:"evaluations"`
Env map[string]string `yaml:"env,omitempty" json:"env,omitempty" mapstructure:"env"`
}

type TemplatesSettingsSprig struct {
Expand Down
12 changes: 1 addition & 11 deletions pkg/spacelift/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
29 changes: 27 additions & 2 deletions pkg/utils/template_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package utils
import (
"bytes"
"context"
"fmt"
"os"
"text/template"
"text/template/parse"
Expand Down Expand Up @@ -136,8 +137,32 @@ func ProcessTmplWithDatasources(
// Process the template
t := template.New(tmplName).Funcs(funcs)

leftDelimiter, _ := lo.Coalesce(cliConfig.Templates.Settings.LeftDelimiter, "{{")
rightDelimiter, _ := lo.Coalesce(cliConfig.Templates.Settings.RightDelimiter, "}}")
// Template delimiters
leftDelimiter := "{{"
rightDelimiter := "}}"

if len(cliConfig.Templates.Settings.Delimiters) > 0 {
if len(cliConfig.Templates.Settings.Delimiters) != 2 {
return "", fmt.Errorf("invalid 'templates.settings.delimiters' config in 'atmos.yaml': %v\n"+
"'delimiters' must be an array with two string items: left and right delimiter\n"+
"the left and right delimiters must not be an empty string", cliConfig.Templates.Settings.Delimiters)
}

if cliConfig.Templates.Settings.Delimiters[0] == "" {
return "", fmt.Errorf("invalid or empty left delimiter in the 'templates.settings.delimiters' config in 'atmos.yaml': %s\n"+
"'delimiters' must be an array with two string items: left and right delimiter\n"+
"the left and right delimiters must not be an empty string", cliConfig.Templates.Settings.Delimiters[0])
}

if cliConfig.Templates.Settings.Delimiters[1] == "" {
return "", fmt.Errorf("invalid or empty right delimiter in the 'templates.settings.delimiters' config in 'atmos.yaml': %s\n"+
"'delimiters' must be an array with two string items: left and right delimiter\n"+
"the left and right delimiters must not be an empty string", cliConfig.Templates.Settings.Delimiters[1])
}

leftDelimiter = cliConfig.Templates.Settings.Delimiters[0]
rightDelimiter = cliConfig.Templates.Settings.Delimiters[1]
}

t.Delims(leftDelimiter, rightDelimiter)

Expand Down
12 changes: 1 addition & 11 deletions pkg/validate/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/vender/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
12 changes: 1 addition & 11 deletions pkg/workflow/atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -334,17 +334,7 @@ schemas:
templates:
settings:
enabled: true
num_steps: 3
steps:
1:
left_delimiter: "${"
right_delimiter: "}"
2:
left_delimiter: "{{"
right_delimiter: "}}"
3:
left_delimiter: "{{"
right_delimiter: "}}"
evaluations: 1
# https://masterminds.github.io/sprig
sprig:
enabled: true
Expand Down
19 changes: 8 additions & 11 deletions website/docs/core-concepts/stacks/templating.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ templates:
# Number of evaluations/passes to process `Go` templates
# If not defined, `evaluations` is automatically set to `1`
evaluations: 2
# Optional template delimiters configuration
# Optional template delimiters
# The `{{ }}` delimiters are the default, no need to specify/redefine them
left_delimiter: "{{"
right_delimiter: "}}"
delimiters: ["{{", "}}"]
# Environment variables to use when executing templates
# https://docs.gomplate.ca/datasources/#using-awssmp-datasources
# https://docs.gomplate.ca/functions/aws/#configuring-aws
Expand Down Expand Up @@ -126,11 +125,8 @@ templates:
is automatically set to `1`. For more details, refer to
[Template Evaluations and Template Processing Pipelines](#template-evaluations-and-template-processing-pipelines)

- `templates.settings.left_delimiter` - the left delimiter to use to process the templates. If not defined, the default
delimiter `{{` will be used

- `templates.settings.right_delimiter` - the right delimiter to use to process the templates. If not defined, the default
delimiter `}}` will be used
- `templates.settings.delimiters` - a list of left and right delimiters to use to process the templates.
If not defined, the default `Go` template delimiters `["{{", "}}"]` will be used

- `templates.settings.sprig.enabled` - a boolean flag to enable/disable the [Sprig Functions](https://masterminds.github.io/sprig/)
in Atmos stack manifests
Expand Down Expand Up @@ -210,12 +206,13 @@ except the following settings are not supported in the `settings.templates.setti
- `settings.templates.settings.sprig.enabled`
- `settings.templates.settings.gomplate.enabled`
- `settings.templates.settings.evaluations`
- `settings.templates.settings.delimiters`

These settings are not supported for the following reasons:

- You can't disable templating in the stack manifests which are being processed by Atmos as `Go` templates

- If you define the `left_delimiter` and `right_delimiter` in the `settings.templates.settings` section in stack manifests,
- If you define the `delimiters` in the `settings.templates.settings` section in stack manifests,
the `Go` templating engine will think that the delimiters specify the beginning and the end of template strings, will
try to evaluate it, which will result in an error

Expand Down Expand Up @@ -870,10 +867,10 @@ In `atmos.yaml`, we figure two evaluations steps of template processing:
templates:
settings:
enabled: true
gomplate:
enabled: true
# Number of evaluations to process `Go` templates
evaluations: 2
gomplate:
enabled: true
```

In an Atmos stack manifest, we define the environment variables in the `env` section (AWS profile with permissions to
Expand Down

0 comments on commit a003e98

Please sign in to comment.