go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/cli/execruntime/provider.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package execruntime 5 6 import "os" 7 8 type envProvider interface { 9 Getenv(key string) string 10 Setenv(key, value string) error 11 Unsetenv(key string) error 12 } 13 14 type osEnvProvider struct{} 15 16 func (e *osEnvProvider) Getenv(key string) string { 17 return os.Getenv(key) 18 } 19 20 func (e *osEnvProvider) Setenv(key, value string) error { 21 return os.Setenv(key, value) 22 } 23 24 func (e *osEnvProvider) Unsetenv(key string) error { 25 return os.Unsetenv(key) 26 } 27 28 func newMockEnvProvider() envProvider { 29 mp := &mockEnvProvider{} 30 mp.variables = make(map[string]string) 31 return mp 32 } 33 34 type mockEnvProvider struct { 35 variables map[string]string 36 } 37 38 func (e *mockEnvProvider) Getenv(key string) string { 39 return e.variables[key] 40 } 41 42 func (e *mockEnvProvider) Setenv(key, value string) error { 43 e.variables[key] = value 44 return nil 45 } 46 47 func (e *mockEnvProvider) Unsetenv(key string) error { 48 delete(e.variables, key) 49 return nil 50 }