Skip to content
This repository was archived by the owner on Jun 1, 2022. It is now read-only.

Commit a5939f6

Browse files
Clean function to edit issue and merge request
1 parent c4798b8 commit a5939f6

File tree

8 files changed

+52
-67
lines changed

8 files changed

+52
-67
lines changed

commands/internal/internal.go

+29
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package internal
22

33
import (
4+
"fmt"
45
"regexp"
56
"strconv"
67
"strings"
78

9+
"github.com/lighttiger2505/lab/git"
810
"github.com/lighttiger2505/lab/internal/browse"
911
"github.com/lighttiger2505/lab/internal/clipboard"
1012
)
@@ -76,3 +78,30 @@ func ParceRepositoryFullName(webURL string) string {
7678

7779
return strings.Join(splitURL[:subPageIndex], "/")
7880
}
81+
82+
func EditContents(title, description string) string {
83+
message := `%s
84+
85+
%s
86+
`
87+
message = fmt.Sprintf(message, title, description)
88+
return message
89+
}
90+
91+
func EditTitleAndDesc(prefix, template string, editFunc func(program, file string) error) (string, string, error) {
92+
editor, err := git.NewEditor(prefix, template, editFunc)
93+
if err != nil {
94+
return "", "", err
95+
}
96+
97+
title, description, err := editor.EditTitleAndDescription()
98+
if err != nil {
99+
return "", "", err
100+
}
101+
102+
if editor != nil {
103+
defer editor.DeleteFile()
104+
}
105+
106+
return title, description, nil
107+
}

commands/issue/create.go

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

6+
"github.com/lighttiger2505/lab/commands/internal"
67
"github.com/lighttiger2505/lab/internal/api"
78
gitlab "github.com/xanzy/go-gitlab"
89
)
@@ -78,8 +79,11 @@ func (m *createOnEditorMethod) Process() (string, error) {
7879
message = m.opt.Message
7980
}
8081

81-
content := editIssueMessage(title, message)
82-
title, message, err := editIssueTitleAndDesc(content, m.editFunc)
82+
title, message, err := internal.EditTitleAndDesc(
83+
"ISSUE",
84+
internal.EditContents(title, message),
85+
m.editFunc,
86+
)
8387
if err != nil {
8488
return "", err
8589
}

commands/issue/issue.go

-28
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"strconv"
77

8-
"github.com/lighttiger2505/lab/git"
98
"github.com/lighttiger2505/lab/internal/api"
109
"github.com/lighttiger2505/lab/internal/gitutil"
1110
"github.com/lighttiger2505/lab/internal/ui"
@@ -90,30 +89,3 @@ func validIssueIID(args []string) (int, error) {
9089
}
9190
return iid, nil
9291
}
93-
94-
func editIssueMessage(title, description string) string {
95-
message := `%s
96-
97-
%s
98-
`
99-
message = fmt.Sprintf(message, title, description)
100-
return message
101-
}
102-
103-
func editIssueTitleAndDesc(template string, editFunc func(program, file string) error) (string, string, error) {
104-
editor, err := git.NewEditor("ISSUE", "issue", template, editFunc)
105-
if err != nil {
106-
return "", "", err
107-
}
108-
109-
title, description, err := editor.EditTitleAndDescription()
110-
if err != nil {
111-
return "", "", err
112-
}
113-
114-
if editor != nil {
115-
defer editor.DeleteFile()
116-
}
117-
118-
return title, description, nil
119-
}

commands/issue/update.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@ func (m *updateOnEditorMethod) Process() (string, error) {
7474
updatedTitle, updatedMessage := getUpdatedTitleAndMessage(issue, m.opt.Title, m.opt.Message)
7575

7676
// Starting editor for edit title and description
77-
content := editIssueMessage(updatedTitle, updatedMessage)
78-
title, message, err := editIssueTitleAndDesc(content, m.editFunc)
77+
title, message, err := internal.EditTitleAndDesc(
78+
"ISSUE",
79+
internal.EditContents(updatedTitle, updatedMessage),
80+
m.editFunc,
81+
)
7982
if err != nil {
8083
return "", err
8184
}

commands/mr/create.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@ func (m *createOnEditorMethod) Process() (string, error) {
7474
message = m.opt.Message
7575
}
7676

77-
content := editMergeRequestTemplate(title, message)
78-
title, message, err := editIssueTitleAndDesc(content, m.editFunc)
77+
title, message, err := internal.EditTitleAndDesc(
78+
"MERGE_REQUEST",
79+
internal.EditContents(title, message),
80+
m.editFunc,
81+
)
7982
if err != nil {
8083
return "", err
8184
}

commands/mr/mr.go

-27
Original file line numberDiff line numberDiff line change
@@ -178,30 +178,3 @@ func validMergeRequestIID(args []string) (int, error) {
178178
}
179179
return iid, nil
180180
}
181-
182-
func editMergeRequestTemplate(title, description string) string {
183-
message := `%s
184-
185-
%s
186-
`
187-
message = fmt.Sprintf(message, title, description)
188-
return message
189-
}
190-
191-
func editIssueTitleAndDesc(template string, editFunc func(program, file string) error) (string, string, error) {
192-
editor, err := git.NewEditor("ISSUE", "issue", template, editFunc)
193-
if err != nil {
194-
return "", "", err
195-
}
196-
197-
title, description, err := editor.EditTitleAndDescription()
198-
if err != nil {
199-
return "", "", err
200-
}
201-
202-
if editor != nil {
203-
defer editor.DeleteFile()
204-
}
205-
206-
return title, description, nil
207-
}

commands/mr/update.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,11 @@ func (m *updateOnEditorMethod) Process() (string, error) {
6262
}
6363

6464
// Starting editor for edit title and description
65-
template := editMergeRequestTemplate(mergeRequest.Title, mergeRequest.Description)
66-
title, message, err := editIssueTitleAndDesc(template, m.editFunc)
65+
title, message, err := internal.EditTitleAndDesc(
66+
"MERGE_REQUEST",
67+
internal.EditContents(mergeRequest.Title, mergeRequest.Description),
68+
m.editFunc,
69+
)
6770
if err != nil {
6871
return "", nil
6972
}

git/editor.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@ import (
1616

1717
type Editor struct {
1818
Program string
19-
Topic string
2019
File string
2120
Message string
2221
CS string
2322
openEditor func(program, file string) error
2423
}
2524

26-
func NewEditor(filePrefix, topic, message string, editFunc func(program, file string) error) (editor *Editor, err error) {
25+
func NewEditor(filePrefix, message string, editFunc func(program, file string) error) (editor *Editor, err error) {
2726
messageFile, err := getMessageFile(filePrefix)
2827
if err != nil {
2928
return
@@ -42,7 +41,6 @@ func NewEditor(filePrefix, topic, message string, editFunc func(program, file st
4241

4342
editor = &Editor{
4443
Program: program,
45-
Topic: topic,
4644
File: messageFile,
4745
Message: message,
4846
CS: cs,
@@ -81,7 +79,7 @@ func (e *Editor) openAndEdit() (content []byte, err error) {
8179

8280
err = e.openEditor(e.Program, e.File)
8381
if err != nil {
84-
err = fmt.Errorf("error using text editor for %s message", e.Topic)
82+
err = fmt.Errorf("error using text editor")
8583
defer e.DeleteFile()
8684
return
8785
}

0 commit comments

Comments
 (0)