MCPcopy Create free account
hub / github.com/coder/envbuilder / setAndRestoreEnv

Function setAndRestoreEnv

envbuilder.go:1812–1832  ·  view source on GitHub ↗
(logf log.Func, key, value string)

Source from the content-addressed store, hash-verified

1810}
1811
1812func setAndRestoreEnv(logf log.Func, key, value string) (restore func() error, err error) {
1813 old := os.Getenv(key)
1814 err = os.Setenv(key, value)
1815 if err != nil {
1816 logf(log.LevelError, "Failed to set %s: %s", key, err)
1817 return nil, fmt.Errorf("set %s: %w", key, err)
1818 }
1819 logf(log.LevelInfo, "Set %s to %s", key, value)
1820 return onceErrFunc(func() error {
1821 if err := func() error {
1822 if old == "" {
1823 return os.Unsetenv(key)
1824 }
1825 return os.Setenv(key, old)
1826 }(); err != nil {
1827 return fmt.Errorf("restore %s: %w", key, err)
1828 }
1829 logf(log.LevelInfo, "Restored %s to %s", key, old)
1830 return nil
1831 }), nil
1832}
1833
1834func onceErrFunc(f func() error) func() error {
1835 var once sync.Once

Callers 1

initDockerConfigOverrideFunction · 0.85

Calls 1

onceErrFuncFunction · 0.85

Tested by

no test coverage detected