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

improved config

This commit is contained in:
Carlos Alexandro Becker 2016-12-31 10:03:25 -02:00
parent 5165364640
commit 12436a5bf4
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
2 changed files with 88 additions and 58 deletions

View File

@ -3,7 +3,6 @@ package config
import (
"errors"
"io/ioutil"
"log"
"os"
"path"
"path/filepath"
@ -56,33 +55,43 @@ func Load(file string) (config ProjectConfig, err error) {
return config, err
}
err = yaml.Unmarshal(data, &config)
config = fix(config)
config, err = fillGitData(config)
if err != nil {
config.fillBasicData()
if err := config.fillFiles(); err != nil {
return config, err
}
if config.BinaryName == "" {
return config, errors.New("missing binary_name")
if err := config.fillGitData(); err != nil {
return config, err
}
if config.Repo == "" {
return config, errors.New("missing repo")
}
return config, err
return config, config.validade()
}
func fix(config ProjectConfig) ProjectConfig {
if len(config.Files) == 0 {
config.Files = []string{}
for _, pattern := range filePatterns {
matches, err := globPath(pattern)
if err != nil {
log.Fatalf("Error searching for %q: %v", pattern, err)
}
config.Files = append(config.Files, matches...)
}
func (config *ProjectConfig) validade() (err error) {
if config.BinaryName == "" {
return errors.New("missing binary_name")
}
if config.Repo == "" {
return errors.New("missing repo")
}
return
}
func (config *ProjectConfig) fillFiles() (err error) {
if len(config.Files) != 0 {
return
}
config.Files = []string{}
for _, pattern := range filePatterns {
matches, err := globPath(pattern)
if err != nil {
return err
}
config.Files = append(config.Files, matches...)
}
return
}
func (config *ProjectConfig) fillBasicData() {
if config.Token == "" {
config.Token = os.Getenv("GITHUB_TOKEN")
}
@ -98,37 +107,26 @@ func fix(config ProjectConfig) ProjectConfig {
if len(config.Build.Arches) == 0 {
config.Build.Arches = []string{"amd64", "386"}
}
return config
}
func fillGitData(config ProjectConfig) (ProjectConfig, error) {
func (config *ProjectConfig) fillGitData() (err error) {
tag, err := git.CurrentTag()
if err != nil {
return config, err
return
}
previous, err := git.PreviousTag(tag)
if err != nil {
return config, err
return
}
log, err := git.Log(previous, tag)
if err != nil {
return config, err
return
}
config.Git.CurrentTag = tag
config.Git.PreviousTag = previous
config.Git.Diff = log
return config, nil
}
func contains(s string, ss []string) bool {
for _, sx := range ss {
if sx == s {
return true
}
}
return false
return
}
func globPath(p string) (m []string, err error) {

View File

@ -7,9 +7,10 @@ import (
"github.com/stretchr/testify/assert"
)
func TestFixConfig(t *testing.T) {
func TestFillBasicData(t *testing.T) {
assert := assert.New(t)
config := fix(ProjectConfig{})
config := ProjectConfig{}
config.fillBasicData()
assert.Equal("main.go", config.Build.Main)
assert.Contains(config.Build.Oses, "darwin")
@ -18,57 +19,88 @@ func TestFixConfig(t *testing.T) {
assert.Contains(config.Build.Arches, "amd64")
}
func TestFixConfigMissingFiles(t *testing.T) {
func TestFillFilesMissingFiles(t *testing.T) {
assert := assert.New(t)
config := fix(ProjectConfig{})
config := ProjectConfig{}
err := config.fillFiles()
assert.NoError(err)
assert.Equal([]string{}, config.Files)
}
func TestFixConfigUSENMarkdown(t *testing.T) {
func TestFillFilesUSENMarkdown(t *testing.T) {
assert := assert.New(t)
cwd, _ := os.Getwd()
os.Chdir("./.test/1")
defer os.Chdir(cwd)
config := fix(ProjectConfig{})
config := ProjectConfig{}
err := config.fillFiles()
assert.NoError(err)
assert.Equal([]string{"LICENSE.md", "README.md"}, config.Files)
os.Chdir(cwd)
}
func TestFixConfigRealENMarkdown(t *testing.T) {
func TestFillFilesRealENMarkdown(t *testing.T) {
assert := assert.New(t)
cwd, _ := os.Getwd()
os.Chdir("./.test/2")
defer os.Chdir(cwd)
config := fix(ProjectConfig{})
config := ProjectConfig{}
err := config.fillFiles()
assert.NoError(err)
assert.Equal([]string{"LICENCE.md", "README.md"}, config.Files)
os.Chdir(cwd)
}
func TestFixConfigArbitratryENTXT(t *testing.T) {
func TestFillFilesArbitratryENTXT(t *testing.T) {
assert := assert.New(t)
cwd, _ := os.Getwd()
os.Chdir("./.test/3")
defer os.Chdir(cwd)
config := fix(ProjectConfig{})
config := ProjectConfig{}
err := config.fillFiles()
assert.NoError(err)
assert.Equal([]string{"LICENCE.txt", "README.txt"}, config.Files)
os.Chdir(cwd)
}
func TestFixConfigArbitratryENNoSuffix(t *testing.T) {
func TestFillFilesArbitratryENNoSuffix(t *testing.T) {
assert := assert.New(t)
cwd, _ := os.Getwd()
os.Chdir("./.test/4")
defer os.Chdir(cwd)
config := fix(ProjectConfig{})
config := ProjectConfig{}
err := config.fillFiles()
assert.NoError(err)
assert.Equal([]string{"LICENCE"}, config.Files)
os.Chdir(cwd)
}
func TestValidadeMissingBinaryName(t *testing.T) {
assert := assert.New(t)
config := ProjectConfig{Repo: "asd/asd"}
assert.Error(config.validade())
}
func TestValidadeMissingRepo(t *testing.T) {
assert := assert.New(t)
config := ProjectConfig{BinaryName: "asd"}
assert.Error(config.validade())
}
func TestValidadeMinimalConfig(t *testing.T) {
assert := assert.New(t)
config := ProjectConfig{BinaryName: "asd", Repo: "asd/asd"}
assert.NoError(config.validade())
}