summaryrefslogtreecommitdiff
path: root/internal/config/config.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config/config.go')
-rw-r--r--internal/config/config.go36
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(),