Skip to content

Commit ec48bfa

Browse files
committed
refactor(ui): refactor all ui
refactor all ui Signed-off-by: mritd <[email protected]>
1 parent 092f09b commit ec48bfa

13 files changed

+476
-219
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ install:
1616
-X 'main.buildDate=${BUILD_DATE}' \
1717
-X 'main.commitID=${COMMIT_SHA1}'"
1818
debug:
19-
go install -trimpath -gcflags "all=-N -l"
19+
go install -trimpath -gcflags "all=-N -l"
2020

2121
clean:
2222
rm -rf dist

apps.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package main
22

33
import (
44
"fmt"
5-
tea "github.com/charmbracelet/bubbletea"
65
"time"
76

7+
tea "github.com/charmbracelet/bubbletea"
88
"github.com/urfave/cli/v2"
99
)
1010

@@ -53,8 +53,7 @@ func newBranchApp(ct string) *cli.App {
5353
return cli.ShowAppHelp(c)
5454
}
5555

56-
m := newResultModel()
57-
m.message, m.err = createBranch(fmt.Sprintf("%s/%s", ct, c.Args().First()))
56+
m := newBranchModel(fmt.Sprintf("%s/%s", ct, c.Args().First()))
5857

5958
return tea.NewProgram(&m).Start()
6059
},
@@ -75,12 +74,12 @@ func commitApp() *cli.App {
7574
return cli.ShowAppHelp(c)
7675
}
7776

78-
m := model{
77+
m := commitModel{
7978
views: []tea.Model{
8079
newSelectorModel(),
8180
newInputsModel(),
82-
newCommitModel(),
83-
newResultModel(),
81+
newCommittingModel(),
82+
newErrorModel(),
8483
},
8584
}
8685

@@ -121,8 +120,7 @@ func pushApp() *cli.App {
121120
return cli.ShowAppHelp(c)
122121
}
123122

124-
m := newResultModel()
125-
m.message, m.err = push()
123+
m := newPushModel()
126124

127125
return tea.NewProgram(&m).Start()
128126
},

git_wapper.go

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,31 @@ func createBranch(name string) (string, error) {
2020
return git("checkout", "-b", name)
2121
}
2222

23-
func hasStagedFiles() error {
24-
msg, err := git("diff", "--cached", "--name-only")
23+
func commit(msg commitMsg) error {
24+
if err := hasStagedFiles(); err != nil {
25+
return err
26+
}
27+
28+
f, err := ioutil.TempFile("", "gitflow-commit")
2529
if err != nil {
2630
return err
2731
}
28-
if msg == "" {
29-
return errors.New("There is no file to commit, please execute the `git add` command to add the commit file.")
32+
defer func() {
33+
_ = f.Close()
34+
_ = os.Remove(f.Name())
35+
}()
36+
37+
_, err = fmt.Fprintf(f, "%s(%s): %s\n\n%s\n\n%s\n\n%s\n", msg.Type, msg.Scope, msg.Subject, msg.Body, msg.Footer, msg.SOB)
38+
if err != nil {
39+
return err
3040
}
31-
return nil
32-
}
3341

34-
func currentBranch() (string, error) {
35-
return git("symbolic-ref", "--short", "HEAD")
42+
_, err = git("commit", "-F", f.Name())
43+
if err != nil {
44+
return err
45+
}
46+
47+
return nil
3648
}
3749

3850
func push() (string, error) {
@@ -53,47 +65,31 @@ func push() (string, error) {
5365
return msg, err
5466
}
5567

56-
func commitMessageCheck(f string) error {
57-
reg := regexp.MustCompile(commitMessageCheckPattern)
58-
bs, err := ioutil.ReadFile(f)
68+
func hasStagedFiles() error {
69+
msg, err := git("diff", "--cached", "--name-only")
5970
if err != nil {
6071
return err
6172
}
62-
63-
msgs := reg.FindStringSubmatch(string(bs))
64-
if len(msgs) != 4 {
65-
return fmt.Errorf(commitMessageCheckFailedMsg)
73+
if msg == "" {
74+
return errors.New("There is no file to commit, please execute the `git add` command to add the commit file.")
6675
}
67-
6876
return nil
6977
}
7078

71-
func commit(msg commitMsg) error {
72-
if err := hasStagedFiles(); err != nil {
73-
return err
74-
}
75-
76-
if msg.Body == "" {
77-
msg.Body = msg.Subject
78-
}
79-
80-
f, err := ioutil.TempFile("", "gitflow-commit")
81-
if err != nil {
82-
return err
83-
}
84-
defer func() {
85-
_ = f.Close()
86-
_ = os.Remove(f.Name())
87-
}()
79+
func currentBranch() (string, error) {
80+
return git("symbolic-ref", "--short", "HEAD")
81+
}
8882

89-
_, err = fmt.Fprintf(f, "%s(%s): %s\n\n%s\n\n%s\n\n%s\n", msg.Type, msg.Scope, msg.Subject, msg.Body, msg.Footer, msg.SOB)
83+
func commitMessageCheck(f string) error {
84+
reg := regexp.MustCompile(commitMessageCheckPattern)
85+
bs, err := ioutil.ReadFile(f)
9086
if err != nil {
9187
return err
9288
}
9389

94-
_, err = git("commit", "-F", f.Name())
95-
if err != nil {
96-
return err
90+
msgs := reg.FindStringSubmatch(string(bs))
91+
if len(msgs) != 4 {
92+
return fmt.Errorf(commitMessageCheckFailedMsg)
9793
}
9894

9995
return nil

ui/multi_task.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,21 @@ var (
3535
Spinner: spinner.Spinner{
3636
Frames: []string{
3737
"[ ]",
38-
"[= ]",
39-
"[== ]",
40-
"[=== ]",
41-
"[ === ]",
42-
"[ ===]",
43-
"[ ==]",
44-
"[ =]",
38+
"[ ]",
39+
"[≡≡ ]",
40+
"[≡≡≡ ]",
41+
"[ ≡≡≡ ]",
42+
"[ ≡≡≡]",
43+
"[ ≡≡]",
44+
"[ ]",
4545
"[ ]",
46-
"[ =]",
47-
"[ ==]",
48-
"[ ===]",
49-
"[ === ]",
50-
"[=== ]",
51-
"[== ]",
52-
"[= ]",
46+
"[ ]",
47+
"[ ≡≡]",
48+
"[ ≡≡≡]",
49+
"[ ≡≡≡ ]",
50+
"[≡≡≡ ]",
51+
"[≡≡ ]",
52+
"[ ]",
5353
"[ ]",
5454
},
5555
FPS: time.Second / 10,
@@ -89,7 +89,7 @@ func NewMultiTaskModelWithTasks(tasks []Task) MultiTaskModel {
8989
return MultiTaskModel{
9090
Tasks: tasks,
9191
Spinner: MultiTaskSpinner,
92-
TaskDelay: 300 * time.Millisecond,
92+
TaskDelay: 200 * time.Millisecond,
9393
LayoutStyle: MultiTaskLayoutStyle,
9494
BorderStyle: MultiTaskBorderStyle,
9595
MsgSuccessStyle: MultiTaskMsgSuccessStyle,

ui.go renamed to ui_commit.go

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ import (
99
const (
1010
SELECTOR = iota
1111
INPUTS
12-
SPINNER
13-
RESULT
12+
COMMIT
13+
ERROR
1414
)
1515

1616
type done struct {
17-
err error
17+
nextView int
18+
err error
1819
}
1920

2021
type commitMsg struct {
@@ -26,50 +27,44 @@ type commitMsg struct {
2627
SOB string
2728
}
2829

29-
type model struct {
30+
type commitModel struct {
3031
err error
3132
views []tea.Model
3233
viewIndex int
3334
}
3435

35-
func (m model) Init() tea.Cmd {
36+
func (m commitModel) Init() tea.Cmd {
3637
return func() tea.Msg {
3738
err := repoCheck()
3839
if err != nil {
39-
return done{err: err}
40+
return done{nextView: ERROR, err: err}
4041
}
4142

4243
err = hasStagedFiles()
4344
if err != nil {
44-
return done{err: err}
45+
return done{nextView: ERROR, err: err}
4546
}
4647

4748
return nil
4849
}
4950
}
5051

51-
func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
52+
func (m *commitModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
5253
switch msg.(type) {
5354
case done: // If the view returns a done message, it means that the stage has been processed
5455
m.err = msg.(done).err
55-
// If there is error in msg, immediately display an error message and exit
56-
if m.err != nil {
57-
m.viewIndex = RESULT
58-
} else {
59-
// Call the next view
60-
m.viewIndex++
61-
}
56+
m.viewIndex = msg.(done).nextView
6257

6358
// some special views need to determine the state of the data to update
6459
switch m.viewIndex {
6560
case INPUTS:
6661
return m, m.inputs
67-
case SPINNER:
62+
case COMMIT:
6863
return m, m.commit
69-
case RESULT:
70-
return m, m.result
64+
case ERROR:
65+
return m, m.showErr
7166
default:
72-
return m, nil
67+
return m, tea.Quit
7368
}
7469
default: // By default, the cmd returned by the view needs to be processed by itself
7570
var cmd tea.Cmd
@@ -78,45 +73,47 @@ func (m *model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
7873
}
7974
}
8075

81-
func (m model) View() string {
76+
func (m commitModel) View() string {
8277
return m.views[m.viewIndex].View()
8378
}
8479

85-
func (m model) inputs() tea.Msg {
80+
func (m commitModel) inputs() tea.Msg {
8681
return strings.ToUpper(m.views[SELECTOR].(selectorModel).choice)
8782
}
8883

89-
func (m model) commit() tea.Msg {
84+
func (m commitModel) commit() tea.Msg {
9085
sob, err := createSOB()
9186
if err != nil {
9287
return done{err: err}
9388
}
9489

95-
return commitMsg{
90+
msg := commitMsg{
9691
Type: m.views[SELECTOR].(selectorModel).choice,
9792
Scope: m.views[INPUTS].(inputsModel).inputs[0].Value(),
9893
Subject: m.views[INPUTS].(inputsModel).inputs[1].Value(),
9994
Body: m.views[INPUTS].(inputsModel).inputs[2].Value(),
10095
Footer: m.views[INPUTS].(inputsModel).inputs[3].Value(),
10196
SOB: sob,
10297
}
103-
}
10498

105-
func (m model) result() tea.Msg {
106-
if m.err != nil {
107-
return m.err
108-
} else {
109-
return successMsg
99+
if msg.Body == "" {
100+
msg.Body = msg.Subject
110101
}
102+
103+
return msg
104+
}
105+
106+
func (m commitModel) showErr() tea.Msg {
107+
return m.err
111108
}
112109

113110
//func main() {
114-
// m := model{
111+
// m := commitModel{
115112
// views: []tea.Model{
116113
// newSelectorModel(),
117114
// newInputsModel(),
118115
// newCommitModel(),
119-
// newResultModel(),
116+
// newErrorModel(),
120117
// },
121118
// }
122119
// if err := tea.NewProgram(&m).Start(); err != nil {

0 commit comments

Comments
 (0)