File tree 4 files changed +60
-20
lines changed
4 files changed +60
-20
lines changed Original file line number Diff line number Diff line change @@ -36,12 +36,48 @@ func (e *Envs) UnmarshalYAML(node *yaml.Node) error {
36
36
keyNode := node .Content [i ]
37
37
valueNode := node .Content [i + 1 ]
38
38
39
- var env Env
40
- if err := valueNode .Decode (& env ); err != nil {
39
+ envAsStr := ""
40
+
41
+ if err := valueNode .Decode (& envAsStr ); err == nil {
42
+ e .Set (keyNode .Value , Env {Name : keyNode .Value , Value : envAsStr })
43
+ continue
44
+ }
45
+
46
+ envAsMap := struct {
47
+ Name string
48
+ Value string
49
+ Sh * string
50
+ Checksum * Checksum
51
+ }{}
52
+
53
+ if err := valueNode .Decode (& envAsMap ); err != nil {
41
54
return err
42
55
}
43
- env .Name = keyNode .Value
44
- e .Set (keyNode .Value , env )
56
+
57
+ env := Env {
58
+ Name : keyNode .Value ,
59
+ Value : envAsMap .Value ,
60
+ Sh : "" ,
61
+ Checksum : Checksum {},
62
+ }
63
+
64
+ if env .Value == "" {
65
+ if envAsMap .Sh == nil && envAsMap .Checksum == nil {
66
+ return fmt .Errorf ("lets: environment variable '%s' must have value or 'sh' or 'checksum'" , keyNode .Value )
67
+ }
68
+
69
+ if envAsMap .Sh != nil && envAsMap .Checksum != nil {
70
+ return fmt .Errorf ("lets: environment variable '%s' must have only 'sh' or 'checksum'" , keyNode .Value )
71
+ }
72
+
73
+ if envAsMap .Sh != nil {
74
+ env .Sh = * envAsMap .Sh
75
+ } else if envAsMap .Checksum != nil {
76
+ env .Checksum = * envAsMap .Checksum
77
+ }
78
+ }
79
+
80
+ e .Set (env .Name , env )
45
81
}
46
82
47
83
return nil
Original file line number Diff line number Diff line change @@ -37,8 +37,8 @@ func (e *ExecuteError) ExitCode() int {
37
37
}
38
38
39
39
type Executor struct {
40
- cfg * config.Config
41
- out io.Writer
40
+ cfg * config.Config
41
+ out io.Writer
42
42
initCalled bool
43
43
}
44
44
Original file line number Diff line number Diff line change @@ -9,10 +9,11 @@ setup() {
9
9
@test " global_env: should provide env to command" {
10
10
run lets global-env
11
11
assert_success
12
- assert_line --index 0 " ONE=1"
13
- assert_line --index 1 " TWO=two"
14
- assert_line --index 2 " THREE=3"
15
- assert_line --index 3 " FOUR=4"
16
- assert_line --index 4 " BAR=Bar"
17
- assert_line --index 5 " FOO=bb1da47569d9fbe3b5f2216fdbd4c9b040ccb5c1"
12
+ assert_line --index 0 " INT=1"
13
+ assert_line --index 1 " STR=hi"
14
+ assert_line --index 2 " STR_INT=1"
15
+ assert_line --index 3 " BOOL=true"
16
+ assert_line --index 4 " ORIGINAL=b"
17
+ assert_line --index 5 " BAR=Bar"
18
+ assert_line --index 6 " FOO=bb1da47569d9fbe3b5f2216fdbd4c9b040ccb5c1"
18
19
}
Original file line number Diff line number Diff line change 1
1
shell : bash
2
2
3
3
env :
4
- ONE : 1
5
- TWO : two
6
- THREE : " 3"
4
+ INT : 1
5
+ STR : " hi"
6
+ STR_INT : " 1"
7
+ BOOL : true
8
+ ORIGINAL : " a"
7
9
BAR :
8
10
sh : echo Bar
9
11
FOO :
@@ -13,11 +15,12 @@ commands:
13
15
global-env :
14
16
description : Test global env
15
17
env :
16
- FOUR : " 4 "
18
+ ORIGINAL : " b "
17
19
cmd : |
18
- echo ONE=${ONE}
19
- echo TWO=${TWO}
20
- echo THREE=${THREE}
21
- echo FOUR=${FOUR}
20
+ echo INT=${INT}
21
+ echo STR=${STR}
22
+ echo STR_INT=${STR_INT}
23
+ echo BOOL=${BOOL}
24
+ echo ORIGINAL=${ORIGINAL}
22
25
echo BAR=${BAR}
23
26
echo FOO=${FOO}
You can’t perform that action at this time.
0 commit comments