Skip to content

Commit 9f94e8c

Browse files
Add an app exit banner message
1 parent 84763f3 commit 9f94e8c

File tree

10 files changed

+436
-24
lines changed

10 files changed

+436
-24
lines changed

app/exit_message.go

+110
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package app
2+
3+
import (
4+
"fmt"
5+
"os"
6+
"strings"
7+
8+
"github.com/logrusorgru/aurora"
9+
"github.com/olebedev/config"
10+
"github.com/wtfutil/wtf/support"
11+
)
12+
13+
const exitMessageHeader = `
14+
____ __ ____ .___________. _______
15+
\ \ / \ / / | || ____|
16+
\ \/ \/ / ----| |-----| |__
17+
\ / | | | __|
18+
\ /\ / | | | |
19+
\__/ \__/ |__| |__|
20+
21+
the personal information dashboard for your terminal
22+
`
23+
24+
// DisplayExitMessage displays the onscreen exit message when the app quits
25+
func (wtfApp *WtfApp) DisplayExitMessage() {
26+
githubAPIKey := readGitHubAPIKey(wtfApp.config)
27+
ghUser := support.NewGitHubUser(githubAPIKey)
28+
29+
exitMessageIsDisplayable := readDisplayableConfig(wtfApp.config)
30+
31+
wtfApp.displayExitMsg(ghUser, exitMessageIsDisplayable)
32+
}
33+
34+
/* -------------------- Unexported Functions -------------------- */
35+
36+
func (wtfApp *WtfApp) displayExitMsg(ghUser *support.GitHubUser, exitMessageIsDisplayable bool) string {
37+
_ = ghUser.Load()
38+
39+
// If a sponsor or contributor and opt out of seeing the exit message, do not display it
40+
if (ghUser.IsContributor || ghUser.IsSponsor) && !exitMessageIsDisplayable {
41+
return ""
42+
}
43+
44+
msgs := []string{}
45+
46+
msgs = append(msgs, aurora.Magenta(exitMessageHeader).String())
47+
48+
if ghUser.IsContributor {
49+
msgs = append(msgs, wtfApp.contributorThankYouMessage())
50+
}
51+
52+
if ghUser.IsSponsor {
53+
msgs = append(msgs, wtfApp.sponsorThankYouMessage())
54+
}
55+
56+
if !ghUser.IsContributor && !ghUser.IsSponsor {
57+
msgs = append(msgs, wtfApp.supportRequestMessage())
58+
}
59+
60+
displayMsg := strings.Join(msgs, "\n")
61+
62+
fmt.Println(displayMsg)
63+
64+
return displayMsg
65+
}
66+
67+
// readDisplayableConfig figures out whether or not the exit message should be displayed
68+
// per the user's wishes. It allows contributors and sponsors to opt out of the exit message
69+
func readDisplayableConfig(cfg *config.Config) bool {
70+
displayExitMsg := cfg.UBool("wtf.exitMessage.display", true)
71+
return displayExitMsg
72+
}
73+
74+
// readGitHubAPIKey attempts to find a GitHub API key somewhere in the configuration file
75+
func readGitHubAPIKey(cfg *config.Config) string {
76+
apiKey := cfg.UString("wtf.exitMessage.githubAPIKey", os.Getenv("WTF_GITHUB_TOKEN"))
77+
if apiKey != "" {
78+
return apiKey
79+
}
80+
81+
moduleConfig, err := cfg.Get("wtf.mods.github")
82+
if err != nil {
83+
return ""
84+
}
85+
86+
return moduleConfig.UString("apiKey", "")
87+
}
88+
89+
/* -------------------- Messaging -------------------- */
90+
91+
func (wtfApp *WtfApp) contributorThankYouMessage() string {
92+
str := " On behalf of all the users of WTF, thank you for contributing to the source code."
93+
str += fmt.Sprintf(" %s", aurora.Green("You rock."))
94+
95+
return str
96+
}
97+
98+
func (wtfApp *WtfApp) sponsorThankYouMessage() string {
99+
str := " Your sponsorship of WTF makes a difference. Thank you for sponsoring and supporting WTF."
100+
str += fmt.Sprintf(" %s", aurora.Green("You're awesome."))
101+
102+
return str
103+
}
104+
105+
func (wtfApp *WtfApp) supportRequestMessage() string {
106+
str := " The development and maintenance of WTF is supported by sponsorships.\n"
107+
str += fmt.Sprintf(" Please consider sponsoring WTF at %s\n", aurora.Green("https://github.com/sponsors/senorprogrammer"))
108+
109+
return str
110+
}

app/exit_message_test.go

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package app
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
"github.com/wtfutil/wtf/support"
8+
"gotest.tools/assert"
9+
)
10+
11+
func Test_displayExitMessage(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
isDisplayable bool
15+
isContributor bool
16+
isSponsor bool
17+
compareWith string
18+
expected string
19+
}{
20+
{
21+
name: "when not displayable",
22+
isDisplayable: false,
23+
isContributor: true,
24+
isSponsor: true,
25+
compareWith: "equals",
26+
expected: "",
27+
},
28+
{
29+
name: "when contributor",
30+
isDisplayable: true,
31+
isContributor: true,
32+
compareWith: "contains",
33+
expected: "thank you for contributing",
34+
},
35+
{
36+
name: "when sponsor",
37+
isDisplayable: true,
38+
isSponsor: true,
39+
compareWith: "contains",
40+
expected: "Thank you for sponsoring",
41+
},
42+
{
43+
name: "when user",
44+
isDisplayable: true,
45+
isContributor: false,
46+
isSponsor: false,
47+
compareWith: "contains",
48+
expected: "supported by sponsorships",
49+
},
50+
}
51+
52+
for _, tt := range tests {
53+
t.Run(tt.name, func(t *testing.T) {
54+
wtfApp := WtfApp{}
55+
ghUser := &support.GitHubUser{
56+
IsContributor: tt.isContributor,
57+
IsSponsor: tt.isSponsor,
58+
}
59+
60+
actual := wtfApp.displayExitMsg(ghUser, tt.isDisplayable)
61+
62+
if tt.compareWith == "equals" {
63+
assert.Equal(t, actual, tt.expected)
64+
}
65+
66+
if tt.compareWith == "contains" {
67+
assert.Equal(t, true, strings.Contains(actual, tt.expected))
68+
}
69+
})
70+
}
71+
}

app/wtf_app.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ func (wtfApp *WtfApp) stopAllWidgets() {
8787
func (wtfApp *WtfApp) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey {
8888
// These keys are global keys used by the app. Widgets should not implement these keys
8989
switch event.Key() {
90+
case tcell.KeyCtrlC:
91+
wtfApp.Stop()
92+
wtfApp.app.Stop()
93+
wtfApp.DisplayExitMessage()
9094
case tcell.KeyCtrlR:
9195
wtfApp.refreshAllWidgets()
9296
return nil
@@ -142,8 +146,8 @@ func (wtfApp *WtfApp) watchForConfigChanges() {
142146

143147
config := cfg.LoadWtfConfigFile(wtfApp.configFilePath)
144148
newApp := NewWtfApp(wtfApp.app, config, wtfApp.configFilePath)
145-
openUrlUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{}))
146-
utils.Init(config.UString("wtf.openFileUtil", "open"), openUrlUtil)
149+
openURLUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{}))
150+
utils.Init(config.UString("wtf.openFileUtil", "open"), openURLUtil)
147151

148152
newApp.Start()
149153
case err := <-watch.Error:

go.mod

+4-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ require (
3030
github.com/gdamore/tcell v1.4.0
3131
github.com/go-ole/go-ole v1.2.4 // indirect
3232
github.com/godbus/dbus v4.1.0+incompatible // indirect
33-
github.com/google/go-github/v26 v26.1.3
33+
github.com/google/go-github/v32 v32.1.0
3434
github.com/gophercloud/gophercloud v0.5.0 // indirect
3535
github.com/hekmon/cunits v2.0.1+incompatible // indirect
3636
github.com/hekmon/transmissionrpc v0.0.0-20190525133028-1d589625bacd
@@ -54,6 +54,8 @@ require (
5454
github.com/radovskyb/watcher v1.0.7
5555
github.com/rivo/tview v0.0.0-20200108161608-1316ea7a4b35
5656
github.com/shirou/gopsutil v2.20.9+incompatible
57+
github.com/shurcooL/githubv4 v0.0.0-20200802174311-f27d2ca7f6d5
58+
github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f // indirect
5759
github.com/spf13/cobra v0.0.5 // indirect
5860
github.com/spf13/pflag v1.0.5 // indirect
5961
github.com/spf13/viper v1.6.1 // indirect
@@ -65,6 +67,7 @@ require (
6567
github.com/zmb3/spotify v0.0.0-20191010212056-e12fb981aacb
6668
github.com/zorkian/go-datadog-api v2.29.0+incompatible
6769
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
70+
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208
6871
golang.org/x/text v0.3.3
6972
google.golang.org/api v0.30.0
7073
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect

go.sum

+6-15
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
316316
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
317317
github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k=
318318
github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
319-
github.com/google/go-github/v26 v26.1.3 h1:n03e8IGgLdD78L+ETWxvqpBIBWEZLlTBCQVU2yImw1o=
320-
github.com/google/go-github/v26 v26.1.3/go.mod h1:v6/FmX9au22j4CtYxnMhJJkP+JfOQDXALk7hI+MPDNM=
319+
github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II=
320+
github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI=
321321
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
322322
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
323323
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
@@ -432,7 +432,6 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht
432432
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
433433
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
434434
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
435-
github.com/json-iterator/go v1.1.7 h1:KfgG9LzI+pYjr4xvmz/5H4FXjokeP+rlHLhv3iH62Fo=
436435
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
437436
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
438437
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
@@ -476,7 +475,6 @@ github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
476475
github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
477476
github.com/logrusorgru/aurora v0.0.0-20190803045625-94edacc10f9b h1:PMbSa9CgaiQR9NLlUTwKi+7aeLl3GG5JX5ERJxfQ3IE=
478477
github.com/logrusorgru/aurora v0.0.0-20190803045625-94edacc10f9b/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
479-
github.com/lucasb-eyer/go-colorful v1.0.2 h1:mCMFu6PgSozg9tDNMMK3g18oJBX7oYGrC09mS6CXfO4=
480478
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
481479
github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac=
482480
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
@@ -676,6 +674,10 @@ github.com/sguiheux/go-coverage v0.0.0-20190710153556-287b082a7197/go.mod h1:0hh
676674
github.com/shirou/gopsutil v0.0.0-20170406131756-e49a95f3d5f8/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
677675
github.com/shirou/gopsutil v2.20.9+incompatible h1:msXs2frUV+O/JLva9EDLpuJ84PrFsdCTCQex8PUdtkQ=
678676
github.com/shirou/gopsutil v2.20.9+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
677+
github.com/shurcooL/githubv4 v0.0.0-20200802174311-f27d2ca7f6d5 h1:CA6Mjshr+g5YHENwllpQNR0UaYO7VGKo6TzJLM64WJQ=
678+
github.com/shurcooL/githubv4 v0.0.0-20200802174311-f27d2ca7f6d5/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo=
679+
github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f h1:tygelZueB1EtXkPI6mQ4o9DQ0+FKW41hTbunoXZCTqk=
680+
github.com/shurcooL/graphql v0.0.0-20181231061246-d48a9a75455f/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg=
679681
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
680682
github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
681683
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
@@ -773,7 +775,6 @@ go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
773775
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
774776
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
775777
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
776-
go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8=
777778
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
778779
go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=
779780
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
@@ -791,7 +792,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
791792
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
792793
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
793794
golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
794-
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
795795
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
796796
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
797797
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -824,7 +824,6 @@ golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKG
824824
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
825825
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
826826
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
827-
golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
828827
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
829828
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
830829
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -855,7 +854,6 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
855854
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
856855
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
857856
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
858-
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
859857
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
860858
golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
861859
golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
@@ -877,7 +875,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
877875
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
878876
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
879877
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
880-
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a h1:WXEvlFVvvGxCJLG6REjsT03iWnKLEWinaScsxF2Vm2o=
881878
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
882879
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
883880
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -917,7 +914,6 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
917914
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
918915
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
919916
golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
920-
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 h1:opSr2sbRXk5X5/givKrrKj9HXxFpW2sdCiP8MJSKLQY=
921917
golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
922918
golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
923919
golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -999,7 +995,6 @@ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/
999995
google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
1000996
google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
1001997
google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
1002-
google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk=
1003998
google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
1004999
google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w=
10051000
google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
@@ -1008,7 +1003,6 @@ google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
10081003
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
10091004
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
10101005
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
1011-
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
10121006
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
10131007
google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc=
10141008
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
@@ -1033,7 +1027,6 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG
10331027
google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
10341028
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
10351029
google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
1036-
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940 h1:MRHtG0U6SnaUb+s+LhNE1qt1FQ1wlhqr5E4usBKC0uA=
10371030
google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
10381031
google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
10391032
google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
@@ -1053,7 +1046,6 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
10531046
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
10541047
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
10551048
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
1056-
google.golang.org/grpc v1.28.0 h1:bO/TA4OxCOummhSf10siHuG7vJOiwh7SpRpFZDkOgl4=
10571049
google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
10581050
google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=
10591051
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
@@ -1129,7 +1121,6 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
11291121
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
11301122
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
11311123
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
1132-
honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U=
11331124
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
11341125
honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
11351126
jaytaylor.com/html2text v0.0.0-20200412013138-3577fbdbcff7 h1:mub0MmFLOn8XLikZOAhgLD1kXJq8jgftSrrv7m00xFo=

main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ func main() {
6565
defer profile.Start(profile.MemProfile).Stop()
6666
}
6767

68-
openUrlUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{}))
69-
utils.Init(config.UString("wtf.openFileUtil", "open"), openUrlUtil)
68+
openURLUtil := utils.ToStrs(config.UList("wtf.openUrlUtil", []interface{}{}))
69+
utils.Init(config.UString("wtf.openFileUtil", "open"), openURLUtil)
7070

7171
setTerm(config)
7272

modules/github/display.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package github
33
import (
44
"fmt"
55

6-
"github.com/google/go-github/v26/github"
6+
ghb "github.com/google/go-github/v32/github"
77
"golang.org/x/text/language"
88
"golang.org/x/text/message"
99
)
@@ -152,7 +152,7 @@ var mergeIcons = map[string]string{
152152
"blocked": "[red]\u2717[white] ",
153153
}
154154

155-
func (widget *Widget) mergeString(pr *github.PullRequest) string {
155+
func (widget *Widget) mergeString(pr *ghb.PullRequest) string {
156156
if !widget.settings.enableStatus {
157157
return ""
158158
}

0 commit comments

Comments
 (0)