1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

refactor: moving config load logic to another file

Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos Alexandro Becker 2024-02-19 20:49:39 -03:00
parent 305663fb5d
commit c54e530902
No known key found for this signature in database
2 changed files with 51 additions and 42 deletions

View File

@ -5,14 +5,11 @@ package config
import (
"encoding/json"
"fmt"
"io"
"io/fs"
"os"
"strings"
"time"
"github.com/goreleaser/goreleaser/internal/logext"
"github.com/goreleaser/goreleaser/internal/yaml"
"github.com/goreleaser/nfpm/v2/files"
"github.com/invopop/jsonschema"
)
@ -1359,45 +1356,6 @@ type OpenCollective struct {
MessageTemplate string `yaml:"message_template,omitempty" json:"message_template,omitempty"`
}
// Load config file.
func Load(file string) (config Project, err error) {
f, err := os.Open(file) // #nosec
if err != nil {
return
}
defer f.Close()
return LoadReader(f)
}
type VersionError struct {
current int
}
func (e VersionError) Error() string {
return fmt.Sprintf(
"only configurations files on %s are supported, yours is %s, please update your configuration",
logext.Keyword("version: 1"),
logext.Keyword(fmt.Sprintf("version: %d", e.current)),
)
}
// LoadReader config via io.Reader.
func LoadReader(fd io.Reader) (config Project, err error) {
data, err := io.ReadAll(fd)
if err != nil {
return config, err
}
var versioned Versioned
_ = yaml.Unmarshal(data, &versioned)
if versioned.Version != 0 && versioned.Version != 1 {
return config, VersionError{versioned.Version}
}
err = yaml.UnmarshalStrict(data, &config)
return config, err
}
// SlackBlock represents the untyped structure of a rich slack message layout.
type SlackBlock struct {
Internal interface{}

51
pkg/config/load.go Normal file
View File

@ -0,0 +1,51 @@
package config
import (
"fmt"
"io"
"os"
"github.com/goreleaser/goreleaser/internal/logext"
"github.com/goreleaser/goreleaser/internal/yaml"
)
// VersionError will happen if the goreleaser config file version does not
// match the current GoReleaser version.
type VersionError struct {
current int
}
func (e VersionError) Error() string {
return fmt.Sprintf(
"only configurations files on %s are supported, yours is %s, please update your configuration",
logext.Keyword("version: 1"),
logext.Keyword(fmt.Sprintf("version: %d", e.current)),
)
}
// Load config file.
func Load(file string) (config Project, err error) {
f, err := os.Open(file) // #nosec
if err != nil {
return
}
defer f.Close()
return LoadReader(f)
}
// LoadReader config via io.Reader.
func LoadReader(fd io.Reader) (config Project, err error) {
data, err := io.ReadAll(fd)
if err != nil {
return config, err
}
var versioned Versioned
_ = yaml.Unmarshal(data, &versioned)
if versioned.Version != 0 && versioned.Version != 1 {
return config, VersionError{versioned.Version}
}
err = yaml.UnmarshalStrict(data, &config)
return config, err
}