mirror of
https://github.com/gabehf/Koito.git
synced 2026-04-22 12:01:52 -07:00
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:
parent
946f407697
commit
a11134dd28
2 changed files with 34 additions and 6 deletions
|
|
@ -3,6 +3,8 @@ package main
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
"log"
|
||||||
|
|
||||||
"github.com/gabehf/koito/engine"
|
"github.com/gabehf/koito/engine"
|
||||||
)
|
)
|
||||||
|
|
@ -11,7 +13,7 @@ var Version = "dev"
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if err := engine.Run(
|
if err := engine.Run(
|
||||||
os.Getenv,
|
readEnvOrFile,
|
||||||
os.Stdout,
|
os.Stdout,
|
||||||
Version,
|
Version,
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
@ -19,3 +21,23 @@ func main() {
|
||||||
os.Exit(1)
|
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
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,12 @@ description: The available configuration options when setting up Koito.
|
||||||
|
|
||||||
Koito is configured using **environment variables**. This is the full list of configuration options supported by Koito.
|
Koito is configured using **environment variables**. This is the full list of configuration options supported by Koito.
|
||||||
|
|
||||||
|
The suffix `_FILE` is also supported for every environment variable. This allows the use of Docker secrets, for example: `KOITO_DATABASE_URL_FILE=/run/secrets/database-url` will load the content of the file at `/run/secrets/database-url` for the environment variable `KOITO_DATABASE_URL`.
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
If the environment variable is defined without **and** with the suffix at the same time, the content of the environment variable without the `_FILE` suffix will have the higher priority.
|
||||||
|
:::
|
||||||
|
|
||||||
##### KOITO_DATABASE_URL
|
##### KOITO_DATABASE_URL
|
||||||
- Required: `true`
|
- Required: `true`
|
||||||
- Description: A Postgres connection URI. See https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS for more information.
|
- Description: A Postgres connection URI. See https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS for more information.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue