Skip to content

Commit

Permalink
Make viper keys uppercase (#1279)
Browse files Browse the repository at this point in the history
## Description

Fixes an issue where keys were not being properly merged from --set and
viper

## Related Issue

Fixes #N/A

## Type of change

- [X] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Other (security config, docs update, etc)

## Checklist before merging

- [X] Test, docs, adr added or updated as needed
- [X] [Contributor Guide
Steps](https://github.com/defenseunicorns/zarf/blob/main/CONTRIBUTING.md#developer-workflow)
followed
  • Loading branch information
Racer159 committed Jan 28, 2023
1 parent 2af391f commit a584e0d
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 14 deletions.
5 changes: 4 additions & 1 deletion src/cmd/initialize.go
Expand Up @@ -10,6 +10,7 @@ import (
"os"
"path"
"path/filepath"
"strings"

"github.com/AlecAivazis/survey/v2"
"github.com/defenseunicorns/zarf/src/config"
Expand Down Expand Up @@ -46,7 +47,9 @@ var initCmd = &cobra.Command{
message.Fatal(err, err.Error())
}

pkgConfig.DeployOpts.SetVariables = utils.MergeMap(v.GetStringMapString(V_PKG_DEPLOY_SET), pkgConfig.DeployOpts.SetVariables)
// Ensure uppercase keys from viper
viperConfig := utils.TransformMapKeys(v.GetStringMapString(V_PKG_DEPLOY_SET), strings.ToUpper)
pkgConfig.DeployOpts.SetVariables = utils.MergeMap(viperConfig, pkgConfig.DeployOpts.SetVariables)

// Configure the packager
pkgClient := packager.NewOrDie(&pkgConfig)
Expand Down
9 changes: 7 additions & 2 deletions src/cmd/package.go
Expand Up @@ -9,6 +9,7 @@ import (
"os"
"path/filepath"
"regexp"
"strings"

"github.com/defenseunicorns/zarf/src/pkg/message"
"github.com/defenseunicorns/zarf/src/types"
Expand Down Expand Up @@ -57,7 +58,9 @@ var packageCreateCmd = &cobra.Command{
config.CommonOptions.CachePath = config.ZarfDefaultCachePath
}

pkgConfig.CreateOpts.SetVariables = utils.MergeMap(v.GetStringMapString(V_PKG_CREATE_SET), pkgConfig.CreateOpts.SetVariables)
// Ensure uppercase keys from viper
viperConfig := utils.TransformMapKeys(v.GetStringMapString(V_PKG_CREATE_SET), strings.ToUpper)
pkgConfig.CreateOpts.SetVariables = utils.MergeMap(viperConfig, pkgConfig.CreateOpts.SetVariables)

// Configure the packager
pkgClient := packager.NewOrDie(&pkgConfig)
Expand All @@ -79,7 +82,9 @@ var packageDeployCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) {
pkgConfig.DeployOpts.PackagePath = choosePackage(args)

pkgConfig.DeployOpts.SetVariables = utils.MergeMap(v.GetStringMapString(V_PKG_DEPLOY_SET), pkgConfig.DeployOpts.SetVariables)
// Ensure uppercase keys from viper
viperConfig := utils.TransformMapKeys(v.GetStringMapString(V_PKG_DEPLOY_SET), strings.ToUpper)
pkgConfig.DeployOpts.SetVariables = utils.MergeMap(viperConfig, pkgConfig.DeployOpts.SetVariables)

// Configure the packager
pkgClient := packager.NewOrDie(&pkgConfig)
Expand Down
5 changes: 4 additions & 1 deletion src/cmd/prepare.go
Expand Up @@ -8,6 +8,7 @@ import (
"crypto"
"fmt"
"os"
"strings"

"github.com/AlecAivazis/survey/v2"
"github.com/defenseunicorns/zarf/src/config"
Expand Down Expand Up @@ -98,7 +99,9 @@ var prepareFindImages = &cobra.Command{
baseDir = args[0]
}

pkgConfig.CreateOpts.SetVariables = utils.MergeMap(v.GetStringMapString(V_PKG_CREATE_SET), pkgConfig.CreateOpts.SetVariables)
// Ensure uppercase keys from viper
viperConfig := utils.TransformMapKeys(v.GetStringMapString(V_PKG_CREATE_SET), strings.ToUpper)
pkgConfig.CreateOpts.SetVariables = utils.MergeMap(viperConfig, pkgConfig.CreateOpts.SetVariables)

// Configure the packager
pkgClient := packager.NewOrDie(&pkgConfig)
Expand Down
14 changes: 4 additions & 10 deletions src/pkg/packager/variables.go
Expand Up @@ -15,12 +15,8 @@ import (

// fillActiveTemplate handles setting the active variables and reloading the base template.
func (p *Packager) fillActiveTemplate() error {
setVariableMap := map[string]string{}

for key, value := range p.cfg.CreateOpts.SetVariables {
// Ensure uppercase keys
setVariableMap[strings.ToUpper(key)] = value
}
// Ensure uppercase keys
setVariableMap := utils.TransformMapKeys(p.cfg.CreateOpts.SetVariables, strings.ToUpper)

packageVariables, err := utils.FindYamlTemplates(&p.cfg.Pkg, "###ZARF_PKG_VAR_", "###")
if err != nil {
Expand Down Expand Up @@ -57,10 +53,8 @@ func (p *Packager) fillActiveTemplate() error {

// setActiveVariables handles setting the active variables used to template component files.
func (p *Packager) setActiveVariables() error {
for key, value := range p.cfg.DeployOpts.SetVariables {
// Ensure uppercase keys
p.setVariable(strings.ToUpper(key), value)
}
// Ensure uppercase keys
p.cfg.SetVariableMap = utils.TransformMapKeys(p.cfg.DeployOpts.SetVariables, strings.ToUpper)

for _, variable := range p.cfg.Pkg.Variables {
_, present := p.cfg.SetVariableMap[variable.Name]
Expand Down
11 changes: 11 additions & 0 deletions src/pkg/utils/misc.go
Expand Up @@ -96,3 +96,14 @@ func MergeMap[T any](m1 map[string]T, m2 map[string]T) (r map[string]T) {

return r
}

// TransformMapKeys takes a map and transforms its keys using the provided function
func TransformMapKeys[T any](m map[string]T, transform func(string) string) (r map[string]T) {
r = map[string]T{}

for key, value := range m {
r[transform(key)] = value
}

return r
}

0 comments on commit a584e0d

Please sign in to comment.