github.com/wtfutil/wtf@v0.43.0/modules/jira/settings.go (about) 1 package jira 2 3 import ( 4 "os" 5 6 "github.com/olebedev/config" 7 "github.com/wtfutil/wtf/cfg" 8 ) 9 10 const ( 11 defaultFocusable = true 12 defaultTitle = "Jira" 13 ) 14 15 type colors struct { 16 rows struct { 17 even string 18 odd string 19 } 20 } 21 22 type Settings struct { 23 colors 24 *cfg.Common 25 26 apiKey string `help:"Your Jira API key (or password for basic auth)."` 27 personalAccessToken string `help:"Access Token to use instead of username / password auth"` 28 domain string `help:"Your Jira corporate domain."` 29 email string `help:"The email address associated with your Jira account (or username for basic auth)."` 30 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"` 31 projects []string `help:"An array of projects to get data from"` 32 username string `help:"Your Jira username."` 33 verifyServerCertificate bool `help:"Determines whether or not the server’s certificate chain and host name are verified." values:"true or false" optional:"true"` 34 } 35 36 func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *config.Config) *Settings { 37 38 settings := Settings{ 39 Common: cfg.NewCommonSettingsFromModule(name, defaultTitle, defaultFocusable, ymlConfig, globalConfig), 40 41 apiKey: ymlConfig.UString("apiKey", ymlConfig.UString("apikey", os.Getenv("WTF_JIRA_API_KEY"))), 42 personalAccessToken: ymlConfig.UString("personalAccessToken"), 43 domain: ymlConfig.UString("domain"), 44 email: ymlConfig.UString("email"), 45 jql: ymlConfig.UString("jql"), 46 username: ymlConfig.UString("username"), 47 verifyServerCertificate: ymlConfig.UBool("verifyServerCertificate", true), 48 } 49 50 cfg.ModuleSecret(name, globalConfig, &settings.apiKey). 51 Service(settings.domain).Load() 52 53 settings.colors.rows.even = ymlConfig.UString("colors.even", "lightblue") 54 settings.colors.rows.odd = ymlConfig.UString("colors.odd", "white") 55 56 settings.projects = settings.arrayifyProjects(ymlConfig) 57 58 return &settings 59 } 60 61 /* -------------------- Unexported functions -------------------- */ 62 63 // arrayifyProjects figures out if we're dealing with a single project or an array of projects 64 func (settings *Settings) arrayifyProjects(ymlConfig *config.Config) []string { 65 projects := []string{} 66 67 // Single project 68 project, err := ymlConfig.String("project") 69 if err == nil { 70 projects = append(projects, project) 71 return projects 72 } 73 74 // Array of projects 75 projectList := ymlConfig.UList("project") 76 for _, projectName := range projectList { 77 if project, ok := projectName.(string); ok { 78 projects = append(projects, project) 79 } 80 } 81 82 return projects 83 }