From e1d4e6021680e1fbcd3d89ab279f402d5a612a98 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Wed, 18 Dec 2019 21:38:42 -0800 Subject: [PATCH] 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 --- modules/pagerduty/settings.go | 4 ++++ modules/pagerduty/widget.go | 12 +++++++++++- modules/todo/settings.go | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/pagerduty/settings.go b/modules/pagerduty/settings.go index e5959dec..03af27c0 100644 --- a/modules/pagerduty/settings.go +++ b/modules/pagerduty/settings.go @@ -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), diff --git a/modules/pagerduty/widget.go b/modules/pagerduty/widget.go index 28d77c59..1528a6a9 100644 --- a/modules/pagerduty/widget.go +++ b/modules/pagerduty/widget.go @@ -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 +} diff --git a/modules/todo/settings.go b/modules/todo/settings.go index a50955fd..72f72cd9 100644 --- a/modules/todo/settings.go +++ b/modules/todo/settings.go @@ -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)