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 }