github.com/Racer159/jackal@v0.32.7-0.20240401174413-0bd2339e4f2e/src/pkg/packager/variables/variables.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: 2021-Present The Jackal Authors 3 4 // Package variables contains functions for working with variables within Jackal packages. 5 package variables 6 7 import ( 8 "github.com/Racer159/jackal/src/config" 9 "github.com/Racer159/jackal/src/pkg/interactive" 10 "github.com/Racer159/jackal/src/types" 11 ) 12 13 // SetVariableMapInConfig handles setting the active variables used to template component files. 14 func SetVariableMapInConfig(cfg *types.PackagerConfig) error { 15 for name, value := range cfg.PkgOpts.SetVariables { 16 cfg.SetVariable(name, value, false, false, "") 17 } 18 19 for _, variable := range cfg.Pkg.Variables { 20 _, present := cfg.SetVariableMap[variable.Name] 21 22 // Variable is present, no need to continue checking 23 if present { 24 cfg.SetVariableMap[variable.Name].Sensitive = variable.Sensitive 25 cfg.SetVariableMap[variable.Name].AutoIndent = variable.AutoIndent 26 cfg.SetVariableMap[variable.Name].Type = variable.Type 27 if err := cfg.CheckVariablePattern(variable.Name, variable.Pattern); err != nil { 28 return err 29 } 30 continue 31 } 32 33 // First set default (may be overridden by prompt) 34 cfg.SetVariable(variable.Name, variable.Default, variable.Sensitive, variable.AutoIndent, variable.Type) 35 36 // Variable is set to prompt the user 37 if variable.Prompt && !config.CommonOptions.Confirm { 38 // Prompt the user for the variable 39 val, err := interactive.PromptVariable(variable) 40 41 if err != nil { 42 return err 43 } 44 45 cfg.SetVariable(variable.Name, val, variable.Sensitive, variable.AutoIndent, variable.Type) 46 } 47 48 if err := cfg.CheckVariablePattern(variable.Name, variable.Pattern); err != nil { 49 return err 50 } 51 } 52 53 return nil 54 }