32 lines
697 B
Go
32 lines
697 B
Go
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
|
|
}
|