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
This commit is contained in:
@@ -1,20 +1,22 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
ServerName string `json:"server_name"`
|
||||
ListenAddr string `json:"listen_addr"`
|
||||
Domain string `json:"domain"`
|
||||
DataDir string `json:"data_dir"`
|
||||
MaxFileSize int64 `json:"max_file_size"`
|
||||
Federation bool `json:"federation"`
|
||||
FederatedWith []string `json:"federated_with"`
|
||||
LogLevel string `json:"log_level"`
|
||||
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 {
|
||||
@@ -39,8 +41,15 @@ func Load(path string) (*Config, error) {
|
||||
if err != nil {
|
||||
return cfg, nil
|
||||
}
|
||||
if err := json.Unmarshal(data, cfg); err != nil {
|
||||
return nil, err
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user