Files
SashegDev 04230fa7f0 config: переезд на YAML вместо JSON + main ветка
- config.json → config.yaml (формат YAML)
- github.com/spf13/viper не нужен — используем gopkg.in/yaml.v3
- Поддержка .yaml и .yml расширений
- Флаг -config по умолчанию смотрит config.yaml
- config.local.{yaml,yml} добавлены в .gitignore
- Ветка переименована master → main
2026-06-06 22:48:27 +00:00

56 lines
1.1 KiB
Go

package config
import (
"os"
"path/filepath"
"strings"
"gopkg.in/yaml.v3"
)
type Config struct {
ServerName string `yaml:"server_name"`
ListenAddr string `yaml:"listen_addr"`
Domain string `yaml:"domain"`
DataDir string `yaml:"data_dir"`
MaxFileSize int64 `yaml:"max_file_size"`
Federation bool `yaml:"federation"`
FederatedWith []string `yaml:"federated_with"`
LogLevel string `yaml:"log_level"`
}
func Default() *Config {
return &Config{
ServerName: "JustAMessenger",
ListenAddr: ":8443",
Domain: "localhost",
DataDir: "./data",
MaxFileSize: 2 << 30,
Federation: false,
LogLevel: "info",
}
}
func Load(path string) (*Config, error) {
cfg := Default()
abs, err := filepath.Abs(path)
if err != nil {
return cfg, nil
}
data, err := os.ReadFile(abs)
if err != nil {
return cfg, nil
}
ext := strings.ToLower(filepath.Ext(path))
switch ext {
case ".yaml", ".yml":
if err := yaml.Unmarshal(data, cfg); err != nil {
return nil, err
}
default:
return cfg, nil
}
return cfg, nil
}