package application import ( "context" "fmt" "time" "github.com/sethvargo/go-envconfig" ) type Config struct { Debug bool `env:"DEBUG"` DiscoveryPort uint16 `env:"DISCOVERY_PORT,default=4321"` BroadcastInterval time.Duration `env:"BROADCAST_INTERVAL,default=5s"` MessagingPort uint16 `env:"MESSAGING_PORT,default=4322"` MessagingInterval time.Duration `env:"MESSAGING_INTERVAL,default=1s"` RandomMessageSize uint `env:"RANDOM_MESSAGE_SIZE,default=10"` } func NewConfig(ctx context.Context) (Config, error) { cfg := Config{} if err := envconfig.Process(ctx, &cfg); err != nil { return Config{}, fmt.Errorf("process envs: %w", err) } return cfg, nil }