44 lines
770 B
Go
44 lines
770 B
Go
package dotenv
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
)
|
|
|
|
// EnvFile is the default file to load
|
|
const EnvFile = ".env"
|
|
|
|
// Load loads the EnvFile and additional files
|
|
func Load(additionalFiles ...string) {
|
|
files := []string{EnvFile}
|
|
if len(additionalFiles) > 0 {
|
|
files = append(files, additionalFiles...)
|
|
}
|
|
|
|
for _, file := range files {
|
|
loadFile(file) //nolint:errcheck // ignore error
|
|
}
|
|
}
|
|
|
|
func loadFile(file string) error {
|
|
if _, err := os.Stat(".env"); errors.Is(err, os.ErrNotExist) {
|
|
return nil
|
|
}
|
|
|
|
contents, err := os.ReadFile(file)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
contentsMap := make(map[string]string)
|
|
if err := parseBytes(contents, contentsMap); err != nil {
|
|
return err
|
|
}
|
|
|
|
for key, value := range contentsMap {
|
|
os.Setenv(key, value)
|
|
}
|
|
|
|
return nil
|
|
}
|