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

Add myName setting to PagerDuty (#799)

If defined, this name will be highlighted in the PagerDuty widget
when that person is on-call.

Signed-off-by: Chris Cummer <chriscummer@me.com>
This commit is contained in:
Chris Cummer 2019-12-18 21:38:42 -08:00 committed by GitHub
parent a7facc85fa
commit e1d4e60216
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 1 deletions

View File

@ -12,22 +12,26 @@ const (
defaultTitle = "PagerDuty"
)
// Settings defines the configuration properties for this module
type Settings struct {
common *cfg.Common
apiKey string `help:"Your PagerDuty API key."`
escalationFilter []interface{} `help:"An array of schedule names you want to filter on."`
myName string `help:"The name to highlight when on-call in PagerDuty."`
scheduleIDs []interface{} `help:"An array of schedule IDs you want to restrict the query to."`
showIncidents bool `help:"Whether or not to list incidents." optional:"true"`
showSchedules bool `help:"Whether or not to show schedules." optional:"true"`
}
// NewSettingsFromYAML creates a new settings instance from a YAML config block
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_PAGERDUTY_API_KEY"))),
escalationFilter: ymlConfig.UList("escalationFilter"),
myName: ymlConfig.UString("myName"),
scheduleIDs: ymlConfig.UList("scheduleIDs", []interface{}{}),
showIncidents: ymlConfig.UBool("showIncidents", true),
showSchedules: ymlConfig.UBool("showSchedules", true),

View File

@ -118,7 +118,7 @@ func (widget *Widget) contentFrom(onCalls []pagerduty.OnCall, incidents []pagerd
" [%s]%d - %s\n",
widget.settings.common.Colors.Text,
item.EscalationLevel,
item.User.Summary,
widget.userSummary(item),
)
}
}
@ -126,3 +126,13 @@ func (widget *Widget) contentFrom(onCalls []pagerduty.OnCall, incidents []pagerd
return str
}
func (widget *Widget) userSummary(item pagerduty.OnCall) string {
summary := item.User.Summary
if summary == widget.settings.myName {
summary = fmt.Sprintf("[::b]%s", summary)
}
return summary
}

View File

@ -10,6 +10,7 @@ const (
defaultTitle = "Todo"
)
// Settings defines the configuration properties for this module
type Settings struct {
common *cfg.Common
@ -18,6 +19,7 @@ type Settings struct {
unchecked string
}
// NewSettingsFromYAML creates a new settings instance from a YAML config block
func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *config.Config) *Settings {
common := cfg.NewCommonSettingsFromModule(name, defaultTitle, defaultFocusable, ymlConfig, globalConfig)