chore: update golangci-lint config

This commit is contained in:
Bruno Carlin 2025-01-14 01:06:47 +01:00
parent 15aa3ea21c
commit 57ff8f2911
Signed by: bcarlin
GPG key ID: 8E254EA0FFEB9B6D
5 changed files with 1047 additions and 757 deletions

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
- Add support for TOML configuration files
- Use stdlib for tests instead of convey
- Update golangci-lint config
- Update golangci-lint configuration
## v0.2.0 (2021-12-19)

View file

@ -16,6 +16,7 @@ const (
typeTOML
)
// getType returns the type of the config file.
func getType(filename string) filetype {
switch {
case strings.HasSuffix(filename, ".json"):
@ -27,7 +28,8 @@ func getType(filename string) filetype {
}
}
func unmarshal(ft filetype, data []byte, v interface{}) error {
// unmarshal unmarshals the given data to the given struct.
func unmarshal(ft filetype, data []byte, v any) error {
switch ft {
case typeJSON:
return unmarshalJSON(data, v)
@ -38,7 +40,8 @@ func unmarshal(ft filetype, data []byte, v interface{}) error {
}
}
func marshal(ft filetype, v interface{}) ([]byte, error) {
// marshal marshals the given struct to bytes.
func marshal(ft filetype, v any) ([]byte, error) {
switch ft {
case typeJSON:
return marshalJSON(v)
@ -49,7 +52,8 @@ func marshal(ft filetype, v interface{}) ([]byte, error) {
}
}
func unmarshalJSON(data []byte, v interface{}) error {
// unmarshalJSON unmarshals the given data to the given struct.
func unmarshalJSON(data []byte, v any) error {
err := json.Unmarshal(data, v)
if err != nil {
return fmt.Errorf("cannot parse config file: %w", err)
@ -58,7 +62,8 @@ func unmarshalJSON(data []byte, v interface{}) error {
return nil
}
func marshalJSON(v interface{}) ([]byte, error) {
// marshalJSON marshals the given struct to bytes.
func marshalJSON(v any) ([]byte, error) {
data, err := json.MarshalIndent(v, "", " ")
if err != nil {
return nil, fmt.Errorf("cannot generate config content: %w", err)
@ -67,7 +72,8 @@ func marshalJSON(v interface{}) ([]byte, error) {
return data, nil
}
func unmarshalTOML(data []byte, v interface{}) error {
// unmarshalTOML unmarshals the given data to the given struct.
func unmarshalTOML(data []byte, v any) error {
err := toml.Unmarshal(data, v)
if err != nil {
return fmt.Errorf("cannot parse config file: %w", err)
@ -76,7 +82,8 @@ func unmarshalTOML(data []byte, v interface{}) error {
return nil
}
func marshalTOML(v interface{}) ([]byte, error) {
// marshalTOML marshals the given struct to bytes.
func marshalTOML(v any) ([]byte, error) {
data, err := toml.Marshal(v)
if err != nil {
return nil, fmt.Errorf("cannot generate config content: %w", err)

View file

@ -22,7 +22,7 @@ var ErrUnsupportedFileType = errors.New("unsupported config type")
// LoadFile reads the file at path, parses its json content and fills the struct
// with the content of the file.
func LoadFile(path string, data interface{}) error {
func LoadFile(path string, data any) error {
return read(path, data)
}
@ -32,7 +32,7 @@ func LoadFile(path string, data interface{}) error {
//
// It returns an error only if the content of a file is invalid, i.e. it
// cannot be unmarshaled to the struct.
func LoadFiles(data interface{}, paths ...string) error {
func LoadFiles(data any, paths ...string) error {
for _, p := range paths {
err := read(p, data)
if err != nil && !errors.Is(err, os.ErrNotExist) {
@ -44,21 +44,21 @@ func LoadFiles(data interface{}, paths ...string) error {
}
// SaveFile writes the given data serialized in JSON in the given path.
func SaveFile(path string, data interface{}) error {
func SaveFile(path string, data any) error {
return write(path, data)
}
// 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.
// 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.
func LoadAndUpdateFile(path string, data interface{}) error {
func LoadAndUpdateFile(path string, data any) error {
if _, err := os.Stat(path); !os.IsNotExist(err) {
err2 := read(path, data)
if err2 != nil {
@ -75,14 +75,15 @@ func LoadAndUpdateFile(path string, data interface{}) error {
// 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
// called by [LoadAndUpdateFile]. It allows one to modify
// the data and persist those changes, for example to
// change default values.
type Updater interface {
// Update is called by LoadAndUpdateFile
Update()
}
func read(path string, data interface{}) error {
func read(path string, data any) error {
content, err := os.ReadFile(filepath.Clean(path))
if err != nil {
return fmt.Errorf("cannot read config file: %w", err)
@ -91,7 +92,7 @@ func read(path string, data interface{}) error {
return unmarshal(getType(path), content, data)
}
func write(path string, data interface{}) error {
func write(path string, data any) error {
content, err := marshal(getType(path), data)
if err != nil {
return err

View file

@ -8,7 +8,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"code.bcarlin.xyz/go/conf"
"code.bcarlin.net/go/conf"
)
func TestJSONFiles(t *testing.T) {