various improvements
Some checks are pending
CI / Lint (push) Waiting to run
CI / Test (push) Waiting to run
CI / End-to-End (push) Waiting to run
CI / Publish Docker (push) Blocked by required conditions
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-09-30 12:01:39 +10:00
parent 6f5d21fa71
commit ea63ffa178
11 changed files with 146 additions and 31 deletions

View File

@@ -1,6 +1,8 @@
package settings
import (
"errors"
"fmt"
"log/slog"
"os"
"vctp/internal/utils"
@@ -8,6 +10,12 @@ import (
"gopkg.in/yaml.v2"
)
type Settings struct {
SettingsPath string
Logger *slog.Logger
Values *SettingsYML
}
// SettingsYML struct holds various runtime data that is too cumbersome to specify via command line, eg replacement properties
type SettingsYML struct {
Settings struct {
@@ -18,23 +26,30 @@ type SettingsYML struct {
} `yaml:"settings"`
}
func ReadYMLSettings(logger *slog.Logger, settingsPath string) (SettingsYML, error) {
func New(logger *slog.Logger, settingsPath string) *Settings {
return &Settings{
SettingsPath: utils.GetFilePath(settingsPath),
Logger: logger,
}
}
func (s *Settings) ReadYMLSettings() error {
// Create config structure
var settings SettingsYML
// Check for empty filename
if len(settingsPath) == 0 {
return settings, nil
if len(s.SettingsPath) == 0 {
return errors.New("settings file path not specified")
}
path := utils.GetFilePath(settingsPath)
//path := utils.GetFilePath(settingsPath)
// Open config file
file, err := os.Open(path)
file, err := os.Open(s.SettingsPath)
if err != nil {
return settings, err
return fmt.Errorf("unable to open settings file : '%s'", err)
}
logger.Debug("Opened settings yaml file", "file_path", path)
s.Logger.Debug("Opened settings yaml file", "file_path", s.SettingsPath)
defer file.Close()
// Init new YAML decode
@@ -42,8 +57,11 @@ func ReadYMLSettings(logger *slog.Logger, settingsPath string) (SettingsYML, err
// Start YAML decoding from file
if err := d.Decode(&settings); err != nil {
return settings, err
return fmt.Errorf("unable to decode settings file : '%s'", err)
}
return settings, nil
s.Logger.Debug("Updating settings", "settings", settings)
s.Values = &settings
return nil
}