mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2024-11-16 12:39:15 +08:00
40 lines
741 B
Go
40 lines
741 B
Go
|
package env
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"sort"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func Write(envMap map[string]string, filename string) error {
|
||
|
content, err := Marshal(envMap)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
file, err := os.Create(filename)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer file.Close()
|
||
|
_, err = file.WriteString(content + "\n")
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return file.Sync()
|
||
|
}
|
||
|
|
||
|
func Marshal(envMap map[string]string) (string, error) {
|
||
|
lines := make([]string, 0, len(envMap))
|
||
|
for k, v := range envMap {
|
||
|
if d, err := strconv.Atoi(v); err == nil {
|
||
|
lines = append(lines, fmt.Sprintf(`%s=%d`, k, d))
|
||
|
} else {
|
||
|
lines = append(lines, fmt.Sprintf(`%s="%s"`, k, v))
|
||
|
}
|
||
|
}
|
||
|
sort.Strings(lines)
|
||
|
return strings.Join(lines, "\n"), nil
|
||
|
}
|