1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/jira/settings.go

77 lines
1.9 KiB
Go

package jira
import (
"os"
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
const configKey = "jira"
type colors struct {
rows struct {
even string
odd string
}
}
type Settings struct {
colors
common *cfg.Common
apiKey string
domain string
email string
jql string
projects []string
username string
verifyServerCertificate bool
}
func NewSettingsFromYAML(name string, ymlConfig *config.Config) *Settings {
localConfig, _ := ymlConfig.Get("wtf.mods." + configKey)
settings := Settings{
common: cfg.NewCommonSettingsFromYAML(name, configKey, ymlConfig),
apiKey: localConfig.UString("apiKey", os.Getenv("WTF_JIRA_API_KEY")),
domain: localConfig.UString("domain"),
email: localConfig.UString("email"),
jql: localConfig.UString("jql"),
username: localConfig.UString("username"),
verifyServerCertificate: localConfig.UBool("verifyServerCertificate", true),
}
settings.colors.rows.even = localConfig.UString("colors.even", "lightblue")
settings.colors.rows.odd = localConfig.UString("colors.odd", "white")
settings.projects = settings.arrayifyProjects(localConfig)
return &settings
}
/* -------------------- Unexported functions -------------------- */
// arrayifyProjects figures out if we're dealing with a single project or an array of projects
func (settings *Settings) arrayifyProjects(localConfig *config.Config) []string {
projects := []string{}
// Single project
project, err := localConfig.String("project")
if err == nil {
projects = append(projects, project)
return projects
}
// Array of projects
projectList := localConfig.UList("project")
for _, projectName := range projectList {
if project, ok := projectName.(string); ok {
projects = append(projects, project)
}
}
return projects
}