package config

import (
	"fmt"
	"os"

	"gopkg.in/yaml.v3"
)

func InitConfig(path string) (*RootConfig, error) {
	conf, err := LoadConfig(path)
	if err != nil {
		return nil, err
	}

	err = conf.Validate()
	if err != nil {
		return nil, fmt.Errorf("failed to validate config: %w", err)
	}

	return conf, nil
}

func LoadConfig(path string) (*RootConfig, error) {
	conf, err := NewDefault()
	if err != nil {
		return nil, fmt.Errorf("failed to set default config: %w", err)
	}

	data, err := os.ReadFile(path)
	if err != nil {
		return nil, fmt.Errorf("failed to read config file: %w", err)
	}

	err = yaml.Unmarshal(data, conf)
	if err != nil {
		return nil, fmt.Errorf("failed to unmarshal config: %w", err)
	}

	return conf, nil
}
