44 "io/ioutil"
55 "os"
66 "path/filepath"
7- "regexp"
87 "strings"
98
109 "github.com/google/go-containerregistry/pkg/name"
@@ -48,12 +47,6 @@ type BuildFlags struct {
4847 PreviousImage string
4948}
5049
51- // Matches `KEY=VALUE` or `KEY` separated by a coma.
52- // Any value may be quoted (that is, enclosed within double-quote characters).
53- // Values with embedded commas or double-quote characters must be quoted.
54- // Each of the embedded double-quote characters must be represented by a pair of double-quote characters.
55- var envTokenExp = regexp .MustCompile (`([^=,]+)(?:=(?:([^,"]*)|"((?:[^"]|"")*)"))?(?:,|$)` )
56-
5750// Build an image from source code
5851func Build (logger logging.Logger , cfg config.Config , packClient PackClient ) * cobra.Command {
5952 var flags BuildFlags
@@ -243,14 +236,8 @@ func parseEnv(envFiles []string, envVars []string) (map[string]string, error) {
243236 env [k ] = v
244237 }
245238 }
246- for _ , envVarLine := range envVars {
247- envVarEntries , err := parseEnvLine (envVarLine )
248- if err != nil {
249- return nil , errors .Wrapf (err , "failed to parse env line '%s'" , envVarLine )
250- }
251- for k , v := range envVarEntries {
252- env [k ] = v
253- }
239+ for _ , envVar := range envVars {
240+ env = addEnvVar (env , envVar )
254241 }
255242 return env , nil
256243}
@@ -271,29 +258,6 @@ func parseEnvFile(filename string) (map[string]string, error) {
271258 return out , nil
272259}
273260
274- func parseEnvLine (envLine string ) (map [string ]string , error ) {
275- out := make (map [string ]string )
276- previousIndex := 0
277- for _ , matchIndexes := range envTokenExp .FindAllStringSubmatchIndex (envLine , - 1 ) {
278- if previousIndex != matchIndexes [0 ] {
279- return nil , errors .Errorf ("invalid syntax between %d and %d" , previousIndex , matchIndexes [1 ])
280- }
281- key := envLine [matchIndexes [2 ]:matchIndexes [3 ]]
282- value := os .Getenv (key )
283- for _ , group := range []int {4 , 6 } {
284- if matchIndexes [group ] > 0 {
285- value = envLine [matchIndexes [group ]:matchIndexes [group + 1 ]]
286- }
287- }
288- out [key ] = strings .ReplaceAll (value , `""` , `"` )
289- previousIndex = matchIndexes [1 ]
290- }
291- if previousIndex != len (envLine ) {
292- return nil , errors .Errorf ("invalid syntax between %d and %d" , previousIndex , len (envLine ))
293- }
294- return out , nil
295- }
296-
297261func addEnvVar (env map [string ]string , item string ) map [string ]string {
298262 arr := strings .SplitN (item , "=" , 2 )
299263 if len (arr ) > 1 {
0 commit comments