Skip to content

Commit 30c8161

Browse files
author
mritd
committed
feat(prompt): 完善提示库
完善提示库 Signed-off-by: mritd <[email protected]>
1 parent b280fcf commit 30c8161

File tree

112 files changed

+10240
-94
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+10240
-94
lines changed

glide.lock

Lines changed: 9 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package: github.com/mritd/gitflow-toolkit
22
import:
3-
- package: github.com/chzyer/readline
4-
version: f6d7a1f6fbf35bbf9beb80dc63c56a29dcfb759f
3+
- package: github.com/mritd/readline
4+
version: 90db0eb8bda49af6c0c871a98e7f2c54544b09df
55
- package: github.com/cpuguy83/go-md2man
66
version: 48d8747a2ca13185e7cc8efe6e9fc196a83f71a5
77
subpackages:

pkg/commit/ci.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ func InputSubject() string {
102102
p := gitprompt.NewDefaultPrompt(func(line []rune) error {
103103
if strings.TrimSpace(string(line)) == "" {
104104
return errors.New("Input is empty!")
105+
} else if len(line) > 25 {
106+
return errors.New("Input length must < 25!")
105107
} else {
106108
return nil
107109
}

pkg/prompt/codes.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,9 @@ const (
5353
showCursor = esc + "?25h"
5454
clearLine = esc + "2K"
5555
moveUp = esc + "1A"
56+
move2Up = esc + "2A"
5657
moveDown = esc + "1B"
57-
cleanTerminal = "\033c"
58+
clearTerminal = "\033c"
5859
)
5960

6061
// FuncMap defines template helpers for the output. It can be extended as a

pkg/prompt/prompt.go

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,10 @@ func NewDefaultTpl(check func(line []rune) error) *Tpl {
5656

5757
func NewDefaultPrompt(check func(line []rune) error, ask string) *Prompt {
5858
return &Prompt{
59-
isFirstRun: true,
60-
Ask: ask,
61-
Prompt: DefaultPrompt,
62-
PromptTpl: NewDefaultTpl(check),
63-
FuncMap: FuncMap,
59+
Ask: ask,
60+
Prompt: DefaultPrompt,
61+
PromptTpl: NewDefaultTpl(check),
62+
FuncMap: FuncMap,
6463
}
6564
}
6665

@@ -94,12 +93,18 @@ func filterInput(r rune) (rune, bool) {
9493
// block CtrlZ feature
9594
case readline.CharCtrlZ:
9695
return r, false
96+
// clear line
97+
case readline.CharInterrupt:
98+
fmt.Print(moveDown)
99+
fmt.Print(clearLine)
100+
fmt.Print(moveUp)
101+
return r, true
97102
}
98103
return r, true
99104
}
100105

101106
func (p *Prompt) Run() string {
102-
107+
p.isFirstRun = true
103108
p.prepareTemplates()
104109

105110
displayPrompt := append(render(p.prompt, p.Prompt), render(p.ask, p.Ask)...)
@@ -115,32 +120,29 @@ func (p *Prompt) Run() string {
115120
util.CheckAndExit(err)
116121

117122
l.Config.SetListener(func(line []rune, pos int, key rune) (newLine []rune, newPos int, ok bool) {
123+
// dynamic verification
118124
if err = p.PromptTpl.CheckListener(line); err != nil {
119125
l.SetPrompt(string(invalidPrompt))
120126
l.Refresh()
121-
122127
} else {
123128
l.SetPrompt(string(validPrompt))
124129
l.Refresh()
125-
126130
}
127131
return nil, 0, false
128-
129132
})
130133
defer l.Close()
134+
135+
// read line
131136
for {
137+
if !p.isFirstRun {
138+
fmt.Print(move2Up)
139+
}
132140
s, err := l.Readline()
133141
util.CheckAndExit(err)
134142
if err = p.PromptTpl.CheckListener([]rune(s)); err != nil {
135-
if p.isFirstRun {
136-
fmt.Print(moveUp)
137-
p.isFirstRun = false
138-
} else {
139-
fmt.Print(moveUp)
140-
fmt.Print(moveUp)
141-
}
142143
fmt.Print(clearLine)
143144
fmt.Println(string(render(p.errorMsg, DefaultErrorMsgPrefix+err.Error())))
145+
p.isFirstRun = false
144146
} else {
145147
return s
146148
}

vendor/github.com/chzyer/readline/example/readline-demo/readline-demo.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/chzyer/readline/example/readline-im/readline-im.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/chzyer/readline/example/readline-multiline/readline-multiline.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/chzyer/readline/example/readline-pass-strength/readline-pass-strength.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/chzyer/readline/example/readline-remote/readline-remote-client/client.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)