diff --git a/flexentry.go b/flexentry.go index 1aa9b1e..8365109 100644 --- a/flexentry.go +++ b/flexentry.go @@ -174,10 +174,30 @@ func (e *Entrypoint) DetectEnviron(ctx context.Context, event Event) ([]string, environ = MergeEnv(environ, es) continue } + if is, ok := v.([]interface{}); ok { + es := make([]string, 0, len(is)) + for _, i := range is { + if s, ok := i.(string); ok { + es = append(es, s) + } + } + environ = MergeEnv(environ, es) + continue + } if es, ok := v.(map[string]string); ok { environ = MergeEnvWithMap(environ, es) continue } + if is, ok := v.(map[string]interface{}); ok { + es := make(map[string]string, len(is)) + for key, value := range is { + if s, ok := value.(string); ok { + es[key] = s + } + } + environ = MergeEnvWithMap(environ, es) + continue + } } return environ, nil } diff --git a/flexentry_test.go b/flexentry_test.go index 8e0e7f8..a241a04 100644 --- a/flexentry_test.go +++ b/flexentry_test.go @@ -147,6 +147,28 @@ func TestEntrypointDetectEnviron(t *testing.T) { "FUGA=hoge", }, }, + { + event: map[string]interface{}{ + "cmd": "echo hoge", + "env": []interface{}{ + "HOGE=fuga", + "FUGA=hoge", + }, + }, + expected: []string{ + "HOGE=fuga", + "FUGA=hoge", + }, + }, + { + event: map[string]interface{}{ + "cmd": "echo hoge", + "env": map[string]interface{}{ + "HOGE": "fuga", + }, + }, + expected: []string{"HOGE=fuga"}, + }, } for i, c := range cases {