12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package config
-
- import (
- "io/ioutil"
- "strings"
-
- "gopkg.in/yaml.v2"
- )
-
- // Config is the Go representation of the configuration file. It is filled when
- // parsing the said file.
- type Config struct {
- Grafana GrafanaSettings `yaml:"grafana"`
- Git GitSettings `yaml:"git"`
- Webhook WebhookSettings `yaml:"webhook"`
- }
-
- // GrafanaSettings contains the data required to talk to the Grafana HTTP API.
- type GrafanaSettings struct {
- BaseURL string `yaml:"base_url"`
- APIKey string `yaml:"api_key"`
- IgnorePrefix string `yaml:"ignore_prefix,omitempty"`
- }
-
- // GitSettings contains the data required to interact with the Git repository.
- type GitSettings struct {
- URL string `yaml:"url"`
- User string `yaml:"user"`
- PrivateKeyPath string `yaml:"private_key"`
- ClonePath string `yaml:"clone_path"`
- CommitsAuthor CommitsAuthorConfig `yaml:"commits_author"`
- }
-
- // CommitsAuthorConfig contains the configuration (name + email address) to use
- // when commiting to Git.
- type CommitsAuthorConfig struct {
- Name string `yaml:"name"`
- Email string `yaml:"email"`
- }
-
- // WebhookSettings contains the data required to setup the GitLab webhook.
- // We declare the port as a string because, although it's a number, it's only
- // used in a string concatenation when creating the webhook.
- type WebhookSettings struct {
- Interface string `yaml:"interface"`
- Port string `yaml:"port"`
- Path string `yaml:"path"`
- Secret string `yaml:"secret"`
- }
-
- // Load opens a given configuration file and parses it into an instance of the
- // Config structure.
- // Returns an error if there was an issue whith reading or parsing the file.
- func Load(filename string) (cfg *Config, err error) {
- rawCfg, err := ioutil.ReadFile(filename)
- if err != nil {
- return
- }
-
- cfg = new(Config)
- err = yaml.Unmarshal(rawCfg, cfg)
- cfg.Grafana.IgnorePrefix = strings.ToLower(cfg.Grafana.IgnorePrefix)
- return
- }
|