1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/config/config.go

83 lines
1.5 KiB
Go
Raw Normal View History

2016-12-21 14:35:34 +02:00
package config
import (
2016-12-29 03:40:59 +02:00
"errors"
2016-12-21 14:35:34 +02:00
"io/ioutil"
"os"
yaml "gopkg.in/yaml.v1"
)
var emptyBrew = HomebrewDeploy{}
type HomebrewDeploy struct {
2016-12-29 17:14:52 +02:00
Repo string
Token string
Caveats string
2016-12-21 14:35:34 +02:00
}
2016-12-21 15:37:31 +02:00
type BuildConfig struct {
Oses []string
Arches []string
2016-12-29 16:37:11 +02:00
Main string
2016-12-21 15:37:31 +02:00
}
2016-12-21 14:35:34 +02:00
type ProjectConfig struct {
Repo string
2016-12-29 03:50:37 +02:00
BinaryName string `yaml:"binary_name"`
Files []string
2016-12-21 14:35:34 +02:00
Brew HomebrewDeploy
Token string
2016-12-21 15:37:31 +02:00
Build BuildConfig
2016-12-21 14:35:34 +02:00
}
func Load(file string) (config ProjectConfig, err error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return config, err
}
err = yaml.Unmarshal(data, &config)
2016-12-29 03:35:45 +02:00
config = fix(config)
if config.BinaryName == "" {
2016-12-29 03:46:18 +02:00
return config, errors.New("missing binary_name")
2016-12-29 03:35:45 +02:00
}
if config.Repo == "" {
2016-12-29 03:46:18 +02:00
return config, errors.New("missing repo")
2016-12-29 03:35:45 +02:00
}
return config, err
2016-12-21 14:35:34 +02:00
}
func fix(config ProjectConfig) ProjectConfig {
2016-12-29 03:50:37 +02:00
if len(config.Files) == 0 {
config.Files = []string{
2016-12-21 14:35:34 +02:00
"README.md",
"LICENSE.md",
}
}
2016-12-29 16:37:11 +02:00
if config.Build.Main == "" {
config.Build.Main = "main.go"
2016-12-21 14:35:34 +02:00
}
if config.Token == "" {
config.Token = os.Getenv("GITHUB_TOKEN")
}
if config.Brew != emptyBrew && config.Brew.Token == "" {
config.Brew.Token = config.Token
}
2016-12-21 15:37:31 +02:00
if len(config.Build.Oses) == 0 {
config.Build.Oses = []string{"linux", "darwin"}
}
if len(config.Build.Arches) == 0 {
config.Build.Arches = []string{"amd64", "386"}
}
2016-12-21 14:35:34 +02:00
return config
}
2016-12-21 18:42:23 +02:00
func contains(s string, ss []string) bool {
2016-12-21 14:35:34 +02:00
for _, sx := range ss {
if sx == s {
2016-12-21 18:42:23 +02:00
return true
2016-12-21 14:35:34 +02:00
}
}
2016-12-21 18:42:23 +02:00
return false
2016-12-21 14:35:34 +02:00
}