conf

package module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package conf defines utils to simplify configuration management.

It provides functions to load and save config files.

Several formats are supported. The encoders/decoders are selected according to the extension of the paths passed to functions:

- JSON: ".json" - TOML: ".toml" - HCL: ".hcl"

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrUnsupportedFileType is returned when the type of the config file is
	// not supported.
	ErrUnsupportedFileType = errors.New("unsupported config type")

	// ErrInvalidMarshalData is returned when the marshaled value is not a
	// struct.
	ErrInvalidMarshalData = errors.New("the marshaled value must be a struct")

	// ErrInvalidUnmarshalData is returned when the marshaled value is not a
	// struct.
	ErrInvalidUnmarshalData = errors.New(
		"the unmarshaled value must be a pointer to a struct",
	)
)

Functions

func LoadAndUpdateFile

func LoadAndUpdateFile(path string, data any) error

LoadAndUpdateFile reads the config fileat path and updates it, meaning that it adds new options, removes old ones, and update it by calling the Update method of data if it implements the interface Updater.

If no file is found at path, it is created and initialized with the default values.

An error is returned only if the config file cannot be written.

LoadAndUpdateFile panics with ErrInvalidUnmarshalData if data is not a pointer to a struct, as this error should be caught during dev.

func LoadFile

func LoadFile(path string, data any) error

LoadFile reads the file at path, parses its json content and fills the struct with the content of the file.

LoadFile panics with ErrInvalidUnmarshalData if data is not a pointer to a struct, as this error should be caught during dev.

func LoadFiles

func LoadFiles(data any, paths ...string) error

LoadFiles tries to load all the given paths in the given order.

If a path does not exist, it is ignored.

It returns an error only if the content of a file is invalid, i.e. it cannot be unmarshaled to the struct.

LoadFiles panics with ErrInvalidUnmarshalData if data is not a pointer to a struct, as this error should be caught during dev.

func SaveFile

func SaveFile(path string, data any) error

SaveFile writes the given data serialized in JSON in the given path.

SaveFile panics with ErrInvalidMarshalData if data is not a struct, as this error should be caught during dev.

Types

type Updater

type Updater interface {
	// Update is called by LoadAndUpdateFile
	Update()
}

Updater is the interface that can be implemented by config structs. If it is implemented, Update() is called by LoadAndUpdateFile. It allows one to modify the data and persist those changes, for example to change default values.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL