2017-04-14 20:39:32 +02:00
|
|
|
// Package config contains the model and loader of the goreleaser configuration
|
|
|
|
// file.
|
2016-12-21 14:35:34 +02:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"io/ioutil"
|
|
|
|
|
|
|
|
yaml "gopkg.in/yaml.v1"
|
|
|
|
)
|
|
|
|
|
2017-03-23 02:01:29 +02:00
|
|
|
// Repo represents any kind of repo (github, gitlab, etc)
|
|
|
|
type Repo struct {
|
|
|
|
Owner string
|
|
|
|
Name string
|
|
|
|
}
|
|
|
|
|
2017-03-23 02:27:04 +02:00
|
|
|
// String of the repo, e.g. owner/name
|
2017-03-23 02:01:29 +02:00
|
|
|
func (r Repo) String() string {
|
|
|
|
return r.Owner + "/" + r.Name
|
|
|
|
}
|
|
|
|
|
2017-01-15 18:37:00 +02:00
|
|
|
// Homebrew contains the brew section
|
|
|
|
type Homebrew struct {
|
2017-03-23 02:01:29 +02:00
|
|
|
GitHub Repo
|
2017-01-17 12:33:43 +02:00
|
|
|
Folder string
|
|
|
|
Caveats string
|
2017-02-21 17:04:57 +02:00
|
|
|
Plist string
|
2017-03-09 19:24:49 +02:00
|
|
|
Install string
|
2017-01-17 12:33:43 +02:00
|
|
|
Dependencies []string
|
2017-02-01 19:40:27 +02:00
|
|
|
Conflicts []string
|
2016-12-21 14:35:34 +02:00
|
|
|
}
|
|
|
|
|
2017-01-22 00:02:51 +02:00
|
|
|
// Hooks define actions to run before and/or after something
|
|
|
|
type Hooks struct {
|
|
|
|
Pre string
|
|
|
|
Post string
|
|
|
|
}
|
|
|
|
|
2017-01-15 18:37:00 +02:00
|
|
|
// Build contains the build configuration section
|
|
|
|
type Build struct {
|
2017-04-21 17:32:34 +02:00
|
|
|
Goos []string
|
|
|
|
Goarch []string
|
|
|
|
Main string
|
|
|
|
Ldflags string
|
|
|
|
Flags string
|
|
|
|
Binary string
|
|
|
|
Hooks Hooks
|
2016-12-21 15:37:31 +02:00
|
|
|
}
|
|
|
|
|
2017-01-15 18:37:00 +02:00
|
|
|
// Archive config used for the archive
|
|
|
|
type Archive struct {
|
2017-01-14 18:06:57 +02:00
|
|
|
Format string
|
|
|
|
NameTemplate string `yaml:"name_template"`
|
|
|
|
Replacements map[string]string
|
2017-01-14 23:47:15 +02:00
|
|
|
Files []string
|
|
|
|
}
|
|
|
|
|
2017-01-15 18:37:00 +02:00
|
|
|
// Release config used for the GitHub release
|
|
|
|
type Release struct {
|
2017-03-23 02:01:29 +02:00
|
|
|
GitHub Repo
|
2017-01-14 18:06:57 +02:00
|
|
|
}
|
|
|
|
|
2017-01-30 01:55:32 +02:00
|
|
|
// FPM config
|
|
|
|
type FPM struct {
|
2017-01-30 02:33:08 +02:00
|
|
|
Formats []string
|
|
|
|
Dependencies []string
|
2017-02-01 19:40:27 +02:00
|
|
|
Conflicts []string
|
2017-04-21 11:28:19 +02:00
|
|
|
Options FPMOptions
|
|
|
|
}
|
|
|
|
|
2017-04-21 17:32:34 +02:00
|
|
|
// FPMOptions config options
|
2017-04-21 11:28:19 +02:00
|
|
|
type FPMOptions struct {
|
|
|
|
Vendor string
|
|
|
|
URL string
|
|
|
|
Maintainer string
|
|
|
|
Description string
|
|
|
|
License string
|
2017-01-30 01:55:32 +02:00
|
|
|
}
|
|
|
|
|
2017-01-15 18:37:00 +02:00
|
|
|
// Project includes all project configuration
|
|
|
|
type Project struct {
|
|
|
|
Release Release
|
|
|
|
Brew Homebrew
|
|
|
|
Build Build
|
|
|
|
Archive Archive
|
2017-01-30 01:55:32 +02:00
|
|
|
FPM FPM `yaml:"fpm"`
|
2017-03-26 02:29:38 +02:00
|
|
|
|
2017-03-26 02:31:41 +02:00
|
|
|
// test only property indicating the path to the dist folder
|
2017-03-26 02:31:16 +02:00
|
|
|
Dist string `yaml:"-"`
|
2016-12-21 14:35:34 +02:00
|
|
|
}
|
|
|
|
|
2016-12-30 16:41:59 +02:00
|
|
|
// Load config file
|
2017-01-15 18:37:00 +02:00
|
|
|
func Load(file string) (config Project, err error) {
|
2016-12-21 14:35:34 +02:00
|
|
|
data, err := ioutil.ReadFile(file)
|
|
|
|
if err != nil {
|
|
|
|
return config, err
|
|
|
|
}
|
2017-01-14 16:34:22 +02:00
|
|
|
err = yaml.Unmarshal(data, &config)
|
2016-12-31 12:53:48 +02:00
|
|
|
return
|
|
|
|
}
|