1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00
wtf/modules/jira/settings.go
Chris Cummer d6a0797bf2 Simplify the inclusion of the Common config settings into each module
Signed-off-by: Chris Cummer <chriscummer@me.com>
2020-11-26 23:18:46 -08:00

82 lines
2.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package jira
import (
"os"
"github.com/olebedev/config"
"github.com/wtfutil/wtf/cfg"
)
const (
defaultFocusable = true
defaultTitle = "Jira"
)
type colors struct {
rows struct {
even string
odd string
}
}
type Settings struct {
colors
*cfg.Common
apiKey string `help:"Your Jira API key (or password for basic auth)."`
domain string `help:"Your Jira corporate domain."`
email string `help:"The email address associated with your Jira account (or username for basic auth)."`
jql string `help:"Custom JQL to be appended to the search query." values:"See Search Jira like a boss with JQL for details." optional:"true"`
projects []string `help:"An array of projects to get data from"`
username string `help:"Your Jira username."`
verifyServerCertificate bool `help:"Determines whether or not the servers certificate chain and host name are verified." values:"true or false" optional:"true"`
}
func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *config.Config) *Settings {
settings := Settings{
Common: cfg.NewCommonSettingsFromModule(name, defaultTitle, defaultFocusable, ymlConfig, globalConfig),
apiKey: ymlConfig.UString("apiKey", ymlConfig.UString("apikey", os.Getenv("WTF_JIRA_API_KEY"))),
domain: ymlConfig.UString("domain"),
email: ymlConfig.UString("email"),
jql: ymlConfig.UString("jql"),
username: ymlConfig.UString("username"),
verifyServerCertificate: ymlConfig.UBool("verifyServerCertificate", true),
}
cfg.ModuleSecret(name, globalConfig, &settings.apiKey).
Service(settings.domain).Load()
settings.colors.rows.even = ymlConfig.UString("colors.even", "lightblue")
settings.colors.rows.odd = ymlConfig.UString("colors.odd", "white")
settings.projects = settings.arrayifyProjects(ymlConfig, globalConfig)
return &settings
}
/* -------------------- Unexported functions -------------------- */
// arrayifyProjects figures out if we're dealing with a single project or an array of projects
func (settings *Settings) arrayifyProjects(ymlConfig *config.Config, globalConfig *config.Config) []string {
projects := []string{}
// Single project
project, err := ymlConfig.String("project")
if err == nil {
projects = append(projects, project)
return projects
}
// Array of projects
projectList := ymlConfig.UList("project")
for _, projectName := range projectList {
if project, ok := projectName.(string); ok {
projects = append(projects, project)
}
}
return projects
}