-
Notifications
You must be signed in to change notification settings - Fork 204
/
issueKeys.go
91 lines (79 loc) · 1.71 KB
/
issueKeys.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package keys
import (
"fmt"
"github.com/charmbracelet/bubbles/key"
log "github.com/charmbracelet/log"
"github.com/dlvhdr/gh-dash/v4/config"
)
type IssueKeyMap struct {
Assign key.Binding
Unassign key.Binding
Comment key.Binding
Close key.Binding
Reopen key.Binding
ViewPRs key.Binding
}
var IssueKeys = IssueKeyMap{
Assign: key.NewBinding(
key.WithKeys("a"),
key.WithHelp("a", "assign"),
),
Unassign: key.NewBinding(
key.WithKeys("A"),
key.WithHelp("A", "unassign"),
),
Comment: key.NewBinding(
key.WithKeys("c"),
key.WithHelp("c", "comment"),
),
Close: key.NewBinding(
key.WithKeys("x"),
key.WithHelp("x", "close"),
),
Reopen: key.NewBinding(
key.WithKeys("X"),
key.WithHelp("X", "reopen"),
),
ViewPRs: key.NewBinding(
key.WithKeys("s"),
key.WithHelp("s", "switch to PRs"),
),
}
func IssueFullHelp() []key.Binding {
return []key.Binding{
IssueKeys.Assign,
IssueKeys.Unassign,
IssueKeys.Comment,
IssueKeys.Close,
IssueKeys.Reopen,
IssueKeys.ViewPRs,
}
}
func rebindIssueKeys(keys []config.Keybinding) error {
for _, issueKey := range keys {
if issueKey.Builtin == "" {
continue
}
log.Debug("Rebinding issue key", "builtin", issueKey.Builtin, "key", issueKey.Key)
var key *key.Binding
switch issueKey.Builtin {
case "assign":
key = &IssueKeys.Assign
case "unassign":
key = &IssueKeys.Unassign
case "comment":
key = &IssueKeys.Comment
case "close":
key = &IssueKeys.Close
case "reopen":
key = &IssueKeys.Reopen
case "viewPrs":
key = &IssueKeys.ViewPRs
default:
return fmt.Errorf("unknown built-in issue key: '%s'", issueKey.Builtin)
}
key.SetKeys(issueKey.Key)
key.SetHelp(issueKey.Key, key.Help().Desc)
}
return nil
}