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  }