70 lines
1.1 KiB
Go
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
|
|
}
|