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 common *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 server’s 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 }