@@ -20,10 +20,9 @@ import (
20
20
var (
21
21
textStyle = lipgloss .NewStyle ().Foreground (lipgloss .Color ("252" )).Render
22
22
spinnerStyle = lipgloss .NewStyle ().Foreground (lipgloss .Color ("69" ))
23
- helpStyle = lipgloss .NewStyle ().Foreground (lipgloss .Color ("241" )).Render
24
23
)
25
24
26
- type model struct {
25
+ type suggestModel struct {
27
26
choices []string
28
27
currentIdx int
29
28
errorMsg string
@@ -33,7 +32,7 @@ type model struct {
33
32
textInput textinput.Model
34
33
}
35
34
36
- func (m * model ) Init () tea.Cmd {
35
+ func (sm * suggestModel ) Init () tea.Cmd {
37
36
conf , err := entity .ReadConfig ()
38
37
if err != nil {
39
38
log .Fatal ("設定情報の取得に失敗: " , err )
@@ -53,79 +52,79 @@ func (m *model) Init() tea.Cmd {
53
52
log .Fatal ("コミットメッセージの生成に失敗: " , err )
54
53
os .Exit (- 1 )
55
54
}
56
- m .choices = messages
57
- m .isLoading = false
55
+ sm .choices = messages
56
+ sm .isLoading = false
58
57
}()
59
58
60
59
return textinput .Blink
61
60
}
62
61
63
- func (m * model ) Update (msg tea.Msg ) (tea.Model , tea.Cmd ) {
62
+ func (sm * suggestModel ) Update (msg tea.Msg ) (tea.Model , tea.Cmd ) {
64
63
var cmd tea.Cmd
65
- m .textInput , cmd = m .textInput .Update (msg )
64
+ sm .textInput , cmd = sm .textInput .Update (msg )
66
65
switch msg := msg .(type ) {
67
66
case tea.KeyMsg :
68
67
switch msg .Type {
69
68
case tea .KeyTab :
70
- m .isEditing = true
71
- m .textInput .Focus ()
72
- m .textInput .SetValue (m .choices [m .currentIdx ])
73
- m .textInput .CharLimit = 100
74
- m .textInput .Width = 100
75
- return m , cmd
69
+ sm .isEditing = true
70
+ sm .textInput .Focus ()
71
+ sm .textInput .SetValue (sm .choices [sm .currentIdx ])
72
+ sm .textInput .CharLimit = 100
73
+ sm .textInput .Width = 100
74
+ return sm , cmd
76
75
case tea .KeyUp :
77
- if m .currentIdx > 0 {
78
- m .currentIdx --
76
+ if sm .currentIdx > 0 {
77
+ sm .currentIdx --
79
78
}
80
79
case tea .KeyDown :
81
- if m .currentIdx < len (m .choices )- 1 {
82
- m .currentIdx ++
80
+ if sm .currentIdx < len (sm .choices )- 1 {
81
+ sm .currentIdx ++
83
82
}
84
83
case tea .KeyEnter :
85
- if err := util .ExecCommitMessage (m .choices [m .currentIdx ]); err != nil {
86
- m .errorMsg = "コミットに失敗: " + err .Error ()
87
- return m , tea .Quit
84
+ if err := util .ExecCommitMessage (sm .choices [sm .currentIdx ]); err != nil {
85
+ sm .errorMsg = "コミットに失敗: " + err .Error ()
86
+ return sm , tea .Quit
88
87
}
89
- return m , tea .Quit
88
+ return sm , tea .Quit
90
89
case tea .KeyCtrlC , tea .KeyEsc :
91
- return m , tea .Quit
90
+ return sm , tea .Quit
92
91
}
93
92
case spinner.TickMsg :
94
93
var cmd tea.Cmd
95
- m .spinner , cmd = m .spinner .Update (msg )
96
- return m , cmd
94
+ sm .spinner , cmd = sm .spinner .Update (msg )
95
+ return sm , cmd
97
96
}
98
- return m , m .spinner .Tick
97
+ return sm , sm .spinner .Tick
99
98
}
100
99
101
- func (m * model ) resetSpinner () {
102
- m .spinner = spinner .New ()
103
- m .spinner .Style = spinnerStyle
104
- m .spinner .Spinner = spinner .Globe
100
+ func (sm * suggestModel ) resetSpinner () {
101
+ sm .spinner = spinner .New ()
102
+ sm .spinner .Style = spinnerStyle
103
+ sm .spinner .Spinner = spinner .Globe
105
104
}
106
105
107
- func (m * model ) View () string {
108
- if m .errorMsg != "" {
109
- return color .RedString (m .errorMsg )
106
+ func (sm * suggestModel ) View () string {
107
+ if sm .errorMsg != "" {
108
+ return color .RedString (sm .errorMsg )
110
109
}
111
- if m .isLoading {
112
- s := fmt .Sprintf ("\n %s %s\n \n " , m .spinner .View (), textStyle ("コミットメッセージ生成中" ))
110
+ if sm .isLoading {
111
+ s := fmt .Sprintf ("\n %s %s\n \n " , sm .spinner .View (), textStyle ("コミットメッセージ生成中" ))
113
112
return s
114
113
}
115
114
var b strings.Builder
116
- if m .errorMsg != "" {
117
- b .WriteString (color .RedString (m .errorMsg ) + "\n \n " )
115
+ if sm .errorMsg != "" {
116
+ b .WriteString (color .RedString (sm .errorMsg ) + "\n \n " )
118
117
}
119
- if m .isEditing {
120
- return m .textInput .View ()
118
+ if sm .isEditing {
119
+ return sm .textInput .View ()
121
120
}
122
121
123
122
b .WriteString (color .WhiteString ("🍕 Please select and enter to commit" ))
124
123
b .WriteString (color .WhiteString ("\n Use arrow ↑↓ to navigate and press Enter to select." ))
125
124
b .WriteString (color .WhiteString ("\n ( enter Tab key to edit message )\n \n " ))
126
125
127
- for i , choice := range m .choices {
128
- if i == m .currentIdx {
126
+ for i , choice := range sm .choices {
127
+ if i == sm .currentIdx {
129
128
b .WriteString (fmt .Sprintf (color .HiCyanString ("➡️ %s\n " ), choice ))
130
129
} else {
131
130
b .WriteString (fmt .Sprintf (color .CyanString (" %s\n " ), choice ))
@@ -134,7 +133,7 @@ func (m *model) View() string {
134
133
return b .String ()
135
134
}
136
135
137
- func initialModel () model {
136
+ func initialModel () suggestModel {
138
137
ti := textinput .New ()
139
138
ti .Focus ()
140
139
@@ -153,9 +152,9 @@ var suggestCmd = &cobra.Command{
153
152
Short : "Suggestion of commit message for staging repository" ,
154
153
Aliases : []string {"s" , "suggest" },
155
154
Run : func (cmd * cobra.Command , args []string ) {
156
- m := initialModel ()
157
- m .resetSpinner ()
158
- p := tea .NewProgram (& m )
155
+ sm := initialModel ()
156
+ sm .resetSpinner ()
157
+ p := tea .NewProgram (& sm )
159
158
p .Run ()
160
159
},
161
160
}
0 commit comments