diff options
Diffstat (limited to 'internal/config/config.go')
| -rw-r--r-- | internal/config/config.go | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/internal/config/config.go b/internal/config/config.go index 8cc6287..419d5c1 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -1,3 +1,20 @@ +// Package config provides configuration management for DTail clients and servers. +// It handles hierarchical configuration from multiple sources including configuration +// files, environment variables, and command-line arguments with proper precedence. +// +// The configuration system supports: +// - Common configuration shared between client and server +// - Client-specific configuration for connection and behavior settings +// - Server-specific configuration for SSH server and resource management +// - Environment variable overrides with DTAIL_ prefix +// - JSON configuration file support +// - Command-line argument parsing and validation +// +// Configuration precedence (highest to lowest): +// 1. Command-line arguments +// 2. Environment variables +// 3. Configuration file +// 4. Default values package config import ( @@ -29,15 +46,32 @@ const ( ) // Client holds a DTail client configuration. +// This global variable provides access to client-specific settings +// after configuration initialization. var Client *ClientConfig // Server holds a DTail server configuration. +// This global variable provides access to server-specific settings +// after configuration initialization. var Server *ServerConfig // Common holds common configs of both both, client and server. +// This global variable provides access to shared configuration +// settings used by both client and server components. var Common *CommonConfig -// Setup the DTail configuration. +// Setup initializes the DTail configuration from multiple sources. +// It creates default configurations, parses configuration files, +// applies environment variables, processes command-line arguments, +// and makes the final configuration available via global variables. +// +// Parameters: +// - sourceProcess: The type of process (client, server, health check) +// - args: Parsed command-line arguments +// - additionalArgs: Additional arguments from flag.Args() +// +// This function panics on configuration errors to ensure the application +// cannot start with invalid configuration. func Setup(sourceProcess source.Source, args *Args, additionalArgs []string) { initializer := initializer{ Common: newDefaultCommonConfig(), |
