loadenv/expand_files.go
2025-02-01 19:24:56 +01:00

70 lines
1.1 KiB
Go

package main
import (
"bytes"
"io"
"os"
)
func expandEnvFiles() error {
for _, path := range FlagExpandEnvFiles {
tmpFile, err := os.CreateTemp("", "*")
if err != nil {
return err
}
defer tmpFile.Close()
ExpandEnvFiles[path] = tmpFile.Name()
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
data, err := io.ReadAll(file)
if err != nil {
return err
}
file.Close()
if _, err := io.Copy(tmpFile, bytes.NewReader(data)); err != nil {
return err
}
newFile, err := os.Create(path)
if err != nil {
return err
}
defer newFile.Close()
if _, err := newFile.WriteString(os.ExpandEnv(string(data))); err != nil {
return err
}
}
return nil
}
func restoreEnvFiles() error {
for originalFilePath, tmpFilePath := range ExpandEnvFiles {
originalFile, err := os.Create(originalFilePath)
if err != nil {
return err
}
defer originalFile.Close()
tmpFile, err := os.Open(tmpFilePath)
if err != nil {
return err
}
defer tmpFile.Close()
if _, err := io.Copy(originalFile, tmpFile); err != nil {
return err
}
}
return nil
}