Documentation
¶
Overview ¶
Package config provides a go-simpler.org/env configuration table and helpers for working with the list of key/value lists stored in .env files.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetEnv ¶
func GetEnv() (requested bool)
GetEnv checks if the first command line argument is "env" and returns whether the environment configuration should be printed.
Return Values ¶
- requested: A boolean indicating true if the 'env' argument was provided, false otherwise.
Expected Behaviour ¶
The function returns true when the first command line argument is "env" (case-insensitive), signalling that the environment configuration should be printed. Otherwise, it returns false.
func HelpRequested ¶
func HelpRequested() (help bool)
HelpRequested determines if the command line arguments indicate a request for help
Return Values ¶
- help: A boolean value indicating true if a help flag was detected in the command line arguments, false otherwise
Expected Behaviour ¶
The function checks the first command line argument for common help flags and returns true if any of them are present. Returns false if no help flag is found
func PrintEnv ¶
PrintEnv outputs sorted environment key/value pairs from a configuration object to the provided writer
Parameters ¶
cfg: Pointer to the configuration object containing env tags
printer: Destination for the output, typically an io.Writer implementation
Expected Behaviour ¶
Outputs each environment variable derived from the config's struct tags in sorted order, formatted as "key=value\n" to the specified writer
func PrintHelp ¶
PrintHelp prints help information including application version, environment variable configuration, and details about .env file handling to the provided writer
Parameters ¶
cfg: Configuration object containing app name and config directory path
printer: Output destination for the help text
Expected Behaviour ¶
Prints application name and version followed by environment variable configuration details, explains .env file behaviour including automatic loading and custom path options, and displays current configuration values using PrintEnv. Outputs all information to the specified writer
Types ¶
type C ¶
type C struct {
AppName string `env:"ORLY_APP_NAME" default:"orly"`
Config string `` /* 200-byte string literal not displayed */
State string `` /* 138-byte string literal not displayed */
DataDir string `env:"ORLY_DATA_DIR" usage:"storage location for the event store" default:"~/.local/cache/orly"`
Listen string `env:"ORLY_LISTEN" default:"0.0.0.0" usage:"network listen address"`
Port int `env:"ORLY_PORT" default:"3334" usage:"port to listen on"`
LogLevel string `env:"ORLY_LOG_LEVEL" default:"info" usage:"debug level: fatal error warn info debug trace"`
DbLogLevel string `env:"ORLY_DB_LOG_LEVEL" default:"info" usage:"debug level: fatal error warn info debug trace"`
Pprof string `env:"ORLY_PPROF" usage:"enable pprof on 127.0.0.1:6060" enum:"cpu,memory,allocation"`
AuthRequired bool `env:"ORLY_AUTH_REQUIRED" default:"false" usage:"require authentication for all requests"`
PublicReadable bool `env:"ORLY_PUBLIC_READABLE" default:"true" usage:"allow public read access to regardless of whether the client is authed"`
SpiderSeeds []string `` /* 288-byte string literal not displayed */
SpiderType string `` /* 181-byte string literal not displayed */
Owners []string `` /* 173-byte string literal not displayed */
Private bool `` /* 141-byte string literal not displayed */
Whitelist []string `env:"ORLY_WHITELIST" usage:"only allow connections from this list of IP addresses"`
RelaySecret string `env:"ORLY_SECRET_KEY" usage:"secret key for relay cluster replication authentication"`
PeerRelays []string `env:"ORLY_PEER_RELAYS" usage:"list of peer relays URLs that new events are pushed to in format <pubkey>|<url>"`
}
C holds application configuration settings loaded from environment variables and default values. It defines parameters for app behaviour, storage locations, logging, and network settings used across the relay service.
func New ¶
New creates and initializes a new configuration object for the relay application
Return Values ¶
cfg: A pointer to the initialized configuration struct containing default or environment-provided values
err: An error object that is non-nil if any operation during initialization fails
Expected Behaviour: ¶
Initializes a new configuration instance by loading environment variables and checking for a .env file in the default configuration directory. Sets logging levels based on configuration values and returns the populated configuration or an error if any step fails
type KVSlice ¶
type KVSlice []KV
KVSlice is a sortable slice of key/value pairs, designed for managing configuration data and enabling operations like merging and sorting based on keys.
func EnvKV ¶
EnvKV generates key/value pairs from a configuration object's struct tags
Parameters ¶
- cfg: A configuration object whose struct fields are processed for env tags
Return Values ¶
- m: A KVSlice containing key/value pairs derived from the config's env tags
Expected Behaviour ¶
Processes each field of the config object, extracting values tagged with "env" and converting them to strings. Skips fields without an "env" tag. Handles various value types including strings, integers, booleans, durations, and string slices by joining elements with commas.
func (KVSlice) Compose ¶
Compose merges two KVSlice instances into a new slice where key-value pairs from the second slice override any duplicate keys from the first slice.
Parameters ¶
- kv2: The second KVSlice whose entries will be merged with the receiver.
Return Values ¶
- out: A new KVSlice containing all entries from both slices, with keys from kv2 taking precedence over keys from the receiver.
Expected Behaviour ¶
The method returns a new KVSlice that combines the contents of the receiver and kv2. If any key exists in both slices, the value from kv2 is used. The resulting slice remains sorted by keys as per the KVSlice implementation.