feat: Allow loading of environment variables from file (#20)

* feat: allow loading of environment variables from file

* Panic if a file for an environment variable cannot be read

* Use log.Fatalf + os.Exit instead of panic

* fix: remove supurfluous call to os.Exit()

---------

Co-authored-by: adaexec <nixos-git.s1pht@simplelogin.com>
Co-authored-by: Gabe Farrell <90876006+gabehf@users.noreply.github.com>
This commit is contained in:
adaexec 2025-06-18 01:48:21 +02:00 committed by GitHub
parent 946f407697
commit a11134dd28
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 6 deletions

View file

@ -3,6 +3,8 @@ package main
import (
"fmt"
"os"
"strings"
"log"
"github.com/gabehf/koito/engine"
)
@ -11,7 +13,7 @@ var Version = "dev"
func main() {
if err := engine.Run(
os.Getenv,
readEnvOrFile,
os.Stdout,
Version,
); err != nil {
@ -19,3 +21,23 @@ func main() {
os.Exit(1)
}
}
func readEnvOrFile(envName string) string {
envContent := os.Getenv(envName)
if envContent == "" {
filename := os.Getenv(envName + "_FILE")
if filename != "" {
b, err := os.ReadFile(filename)
if err != nil {
log.Fatalf("Failed to load file for %s_FILE (%s): %s", envName, filename, err)
}
envContent = strings.TrimSpace(string(b))
}
}
return envContent
}