(logf log.Func, key, value string)
| 1810 | } |
| 1811 | |
| 1812 | func 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 | |
| 1834 | func onceErrFunc(f func() error) func() error { |
| 1835 | var once sync.Once |
no test coverage detected