1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-01-10 03:47:03 +02:00
goreleaser/config/config.go
Carlos Alexandro Becker 2705953e32
docs
2017-03-25 21:31:41 -03:00

92 lines
1.7 KiB
Go

package config
import (
"io/ioutil"
yaml "gopkg.in/yaml.v1"
)
// Repo represents any kind of repo (github, gitlab, etc)
type Repo struct {
Owner string
Name string
}
// String of the repo, e.g. owner/name
func (r Repo) String() string {
return r.Owner + "/" + r.Name
}
// Homebrew contains the brew section
type Homebrew struct {
Repo string // deprecated!
GitHub Repo
Folder string
Caveats string
Plist string
Install string
Dependencies []string
Conflicts []string
}
// Hooks define actions to run before and/or after something
type Hooks struct {
Pre string
Post string
}
// Build contains the build configuration section
type Build struct {
Goos []string
Goarch []string
Main string
Ldflags string
Flags string
BinaryName string `yaml:"binary_name"` // deprecated
Binary string
Hooks Hooks
}
// Archive config used for the archive
type Archive struct {
Format string
NameTemplate string `yaml:"name_template"`
Replacements map[string]string
Files []string
}
// Release config used for the GitHub release
type Release struct {
Repo string // deprecated!
GitHub Repo
}
// FPM config
type FPM struct {
Formats []string
Dependencies []string
Conflicts []string
}
// Project includes all project configuration
type Project struct {
Release Release
Brew Homebrew
Build Build
Archive Archive
FPM FPM `yaml:"fpm"`
// test only property indicating the path to the dist folder
Dist string `yaml:"-"`
}
// Load config file
func Load(file string) (config Project, err error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return config, err
}
err = yaml.Unmarshal(data, &config)
return
}