mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	Update Vendors (#250)
update go min version Update Vendors: * code.gitea.io/gitea-vet v0.2.0 -> v0.2.1 * code.gitea.io/sdk/gitea v0.13.0 -> v0.13.1 * github.com/AlecAivazis/survey v2.1.1 -> v2.2.2 * github.com/adrg/xdg v0.2.1 -> v0.2.2 * github.com/araddon/dateparse d820a6159ab1 -> 8aadafed4dc4 * github.com/go-git/go-git v5.1.0 -> v5.2.0 * github.com/muesli/termenv v0.7.2 -> v0.7.4 * github.com/stretchr/testify v1.5.1 -> v1.6.1 * github.com/urfave/cli v2.2.0 -> v2.3.0 Co-authored-by: 6543 <6543@obermui.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/250 Reviewed-by: Andrew Thornton <art27@cantab.net> Reviewed-by: mrsdizzie <info@mrsdizzie.com> Co-Authored-By: 6543 <6543@noreply.gitea.io> Co-Committed-By: 6543 <6543@noreply.gitea.io>
This commit is contained in:
		
							
								
								
									
										18
									
								
								vendor/github.com/AlecAivazis/survey/v2/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/AlecAivazis/survey/v2/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -62,6 +62,7 @@ func main() { | ||||
| 1. [Running the Prompts](#running-the-prompts) | ||||
| 1. [Prompts](#prompts) | ||||
|    1. [Input](#input) | ||||
|       1. [Suggestion Options](#suggestion-options) | ||||
|    1. [Multiline](#multiline) | ||||
|    1. [Password](#password) | ||||
|    1. [Confirm](#confirm) | ||||
| @@ -137,6 +138,23 @@ prompt := &survey.Input{ | ||||
| survey.AskOne(prompt, &name) | ||||
| ``` | ||||
|  | ||||
| #### Suggestion Options | ||||
|  | ||||
| <img src="https://i.imgur.com/Q7POpA1.gif" width="800px"/> | ||||
|  | ||||
| ```golang | ||||
| file := "" | ||||
| prompt := &survey.Input{ | ||||
|     Message: "inform a file to save:", | ||||
|     Suggest: func (toComplete string) []string { | ||||
|         files, _ := filepath.Glob(toComplete + "*") | ||||
|         return files | ||||
|     }, | ||||
| } | ||||
| } | ||||
| survey.AskOne(prompt, &file) | ||||
| ``` | ||||
|  | ||||
| ### Multiline | ||||
|  | ||||
| <img src="https://thumbs.gfycat.com/ImperfectShimmeringBeagle-size_restricted.gif" width="400px"/> | ||||
|   | ||||
							
								
								
									
										154
									
								
								vendor/github.com/AlecAivazis/survey/v2/input.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										154
									
								
								vendor/github.com/AlecAivazis/survey/v2/input.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,10 @@ | ||||
| package survey | ||||
|  | ||||
| import ( | ||||
| 	"github.com/AlecAivazis/survey/v2/core" | ||||
| 	"github.com/AlecAivazis/survey/v2/terminal" | ||||
| ) | ||||
|  | ||||
| /* | ||||
| Input is a regular text input that prints each character the user types on the screen | ||||
| and accepts the input with the enter key. Response type is a string. | ||||
| @@ -10,18 +15,26 @@ and accepts the input with the enter key. Response type is a string. | ||||
| */ | ||||
| type Input struct { | ||||
| 	Renderer | ||||
| 	Message string | ||||
| 	Default string | ||||
| 	Help    string | ||||
| 	Message       string | ||||
| 	Default       string | ||||
| 	Help          string | ||||
| 	Suggest       func(toComplete string) []string | ||||
| 	typedAnswer   string | ||||
| 	answer        string | ||||
| 	options       []core.OptionAnswer | ||||
| 	selectedIndex int | ||||
| 	showingHelp   bool | ||||
| } | ||||
|  | ||||
| // data available to the templates when processing | ||||
| type InputTemplateData struct { | ||||
| 	Input | ||||
| 	Answer     string | ||||
| 	ShowAnswer bool | ||||
| 	ShowHelp   bool | ||||
| 	Config     *PromptConfig | ||||
| 	ShowAnswer    bool | ||||
| 	ShowHelp      bool | ||||
| 	Answer        string | ||||
| 	PageEntries   []core.OptionAnswer | ||||
| 	SelectedIndex int | ||||
| 	Config        *PromptConfig | ||||
| } | ||||
|  | ||||
| // Templates with Color formatting. See Documentation: https://github.com/mgutz/ansi#style-format | ||||
| @@ -31,11 +44,92 @@ var InputQuestionTemplate = ` | ||||
| {{- color "default+hb"}}{{ .Message }} {{color "reset"}} | ||||
| {{- if .ShowAnswer}} | ||||
|   {{- color "cyan"}}{{.Answer}}{{color "reset"}}{{"\n"}} | ||||
| {{- else if .PageEntries -}} | ||||
|   {{- .Answer}} [Use arrows to move, enter to select, type to continue] | ||||
|   {{- "\n"}} | ||||
|   {{- range $ix, $choice := .PageEntries}} | ||||
|     {{- if eq $ix $.SelectedIndex }}{{color $.Config.Icons.SelectFocus.Format }}{{ $.Config.Icons.SelectFocus.Text }} {{else}}{{color "default"}}  {{end}} | ||||
|     {{- $choice.Value}} | ||||
|     {{- color "reset"}}{{"\n"}} | ||||
|   {{- end}} | ||||
| {{- else }} | ||||
|   {{- if and .Help (not .ShowHelp)}}{{color "cyan"}}[{{ print .Config.HelpInput }} for help]{{color "reset"}} {{end}} | ||||
|   {{- if or (and .Help (not .ShowHelp)) .Suggest }}{{color "cyan"}}[ | ||||
|     {{- if and .Help (not .ShowHelp)}}{{ print .Config.HelpInput }} for help {{- if and .Suggest}}, {{end}}{{end -}} | ||||
|     {{- if and .Suggest }}{{color "cyan"}}{{ print .Config.SuggestInput }} for suggestions{{end -}} | ||||
|   ]{{color "reset"}} {{end}} | ||||
|   {{- if .Default}}{{color "white"}}({{.Default}}) {{color "reset"}}{{end}} | ||||
|   {{- .Answer -}} | ||||
| {{- end}}` | ||||
|  | ||||
| func (i *Input) OnChange(key rune, config *PromptConfig) (bool, error) { | ||||
| 	if key == terminal.KeyEnter || key == '\n' { | ||||
| 		if i.answer != config.HelpInput || i.Help == "" { | ||||
| 			// we're done | ||||
| 			return true, nil | ||||
| 		} else { | ||||
| 			i.answer = "" | ||||
| 			i.showingHelp = true | ||||
| 		} | ||||
| 	} else if key == terminal.KeyDeleteWord || key == terminal.KeyDeleteLine { | ||||
| 		i.answer = "" | ||||
| 	} else if key == terminal.KeyEscape && i.Suggest != nil { | ||||
| 		if len(i.options) > 0 { | ||||
| 			i.answer = i.typedAnswer | ||||
| 		} | ||||
| 		i.options = nil | ||||
| 	} else if key == terminal.KeyArrowUp && len(i.options) > 0 { | ||||
| 		if i.selectedIndex == 0 { | ||||
| 			i.selectedIndex = len(i.options) - 1 | ||||
| 		} else { | ||||
| 			i.selectedIndex-- | ||||
| 		} | ||||
| 		i.answer = i.options[i.selectedIndex].Value | ||||
| 	} else if (key == terminal.KeyArrowDown || key == terminal.KeyTab) && len(i.options) > 0 { | ||||
| 		if i.selectedIndex == len(i.options)-1 { | ||||
| 			i.selectedIndex = 0 | ||||
| 		} else { | ||||
| 			i.selectedIndex++ | ||||
| 		} | ||||
| 		i.answer = i.options[i.selectedIndex].Value | ||||
| 	} else if key == terminal.KeyTab && i.Suggest != nil { | ||||
| 		options := i.Suggest(i.answer) | ||||
| 		i.selectedIndex = 0 | ||||
| 		i.typedAnswer = i.answer | ||||
| 		if len(options) > 0 { | ||||
| 			i.answer = options[0] | ||||
| 			if len(options) == 1 { | ||||
| 				i.options = nil | ||||
| 			} else { | ||||
| 				i.options = core.OptionAnswerList(options) | ||||
| 			} | ||||
| 		} | ||||
| 	} else if key == terminal.KeyDelete || key == terminal.KeyBackspace { | ||||
| 		if i.answer != "" { | ||||
| 			i.answer = i.answer[0 : len(i.answer)-1] | ||||
| 		} | ||||
| 	} else if key >= terminal.KeySpace { | ||||
| 		i.answer += string(key) | ||||
| 		i.typedAnswer = i.answer | ||||
| 		i.options = nil | ||||
| 	} | ||||
|  | ||||
| 	pageSize := config.PageSize | ||||
| 	opts, idx := paginate(pageSize, i.options, i.selectedIndex) | ||||
| 	err := i.Render( | ||||
| 		InputQuestionTemplate, | ||||
| 		InputTemplateData{ | ||||
| 			Input:         *i, | ||||
| 			Answer:        i.answer, | ||||
| 			ShowHelp:      i.showingHelp, | ||||
| 			SelectedIndex: idx, | ||||
| 			PageEntries:   opts, | ||||
| 			Config:        config, | ||||
| 		}, | ||||
| 	) | ||||
|  | ||||
| 	return err != nil, err | ||||
| } | ||||
|  | ||||
| func (i *Input) Prompt(config *PromptConfig) (interface{}, error) { | ||||
| 	// render the template | ||||
| 	err := i.Render( | ||||
| @@ -55,41 +149,39 @@ func (i *Input) Prompt(config *PromptConfig) (interface{}, error) { | ||||
| 	defer rr.RestoreTermMode() | ||||
|  | ||||
| 	cursor := i.NewCursor() | ||||
| 	cursor.Hide()       // hide the cursor | ||||
| 	defer cursor.Show() // show the cursor when we're done | ||||
|  | ||||
| 	line := []rune{} | ||||
| 	// get the next line | ||||
| 	// start waiting for input | ||||
| 	for { | ||||
| 		line, err = rr.ReadLine(0) | ||||
| 		r, _, err := rr.ReadRune() | ||||
| 		if err != nil { | ||||
| 			return string(line), err | ||||
| 			return "", err | ||||
| 		} | ||||
| 		if r == terminal.KeyInterrupt { | ||||
| 			return "", terminal.InterruptErr | ||||
| 		} | ||||
| 		if r == terminal.KeyEndTransmission { | ||||
| 			break | ||||
| 		} | ||||
| 		// terminal will echo the \n so we need to jump back up one row | ||||
| 		cursor.PreviousLine(1) | ||||
|  | ||||
| 		if string(line) == config.HelpInput && i.Help != "" { | ||||
| 			err = i.Render( | ||||
| 				InputQuestionTemplate, | ||||
| 				InputTemplateData{ | ||||
| 					Input:    *i, | ||||
| 					ShowHelp: true, | ||||
| 					Config:   config, | ||||
| 				}, | ||||
| 			) | ||||
| 			if err != nil { | ||||
| 				return "", err | ||||
| 			} | ||||
| 			continue | ||||
| 		b, err := i.OnChange(r, config) | ||||
| 		if err != nil { | ||||
| 			return "", err | ||||
| 		} | ||||
|  | ||||
| 		if b { | ||||
| 			break | ||||
| 		} | ||||
| 		break | ||||
| 	} | ||||
|  | ||||
| 	// if the line is empty | ||||
| 	if line == nil || len(line) == 0 { | ||||
| 	if len(i.answer) == 0 { | ||||
| 		// use the default value | ||||
| 		return i.Default, err | ||||
| 	} | ||||
|  | ||||
| 	lineStr := string(line) | ||||
| 	lineStr := i.answer | ||||
|  | ||||
| 	i.AppendRenderedText(lineStr) | ||||
|  | ||||
| @@ -102,9 +194,9 @@ func (i *Input) Cleanup(config *PromptConfig, val interface{}) error { | ||||
| 		InputQuestionTemplate, | ||||
| 		InputTemplateData{ | ||||
| 			Input:      *i, | ||||
| 			Answer:     val.(string), | ||||
| 			ShowAnswer: true, | ||||
| 			Config:     config, | ||||
| 			Answer:     i.answer, | ||||
| 		}, | ||||
| 	) | ||||
| } | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/AlecAivazis/survey/v2/multiselect.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/AlecAivazis/survey/v2/multiselect.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -77,7 +77,7 @@ func (m *MultiSelect) OnChange(key rune, config *PromptConfig) { | ||||
| 			// decrement the selected index | ||||
| 			m.selectedIndex-- | ||||
| 		} | ||||
| 	} else if key == terminal.KeyArrowDown || (m.VimMode && key == 'j') { | ||||
| 	} else if key == terminal.KeyTab || key == terminal.KeyArrowDown || (m.VimMode && key == 'j') { | ||||
| 		// if we are at the bottom of the list | ||||
| 		if m.selectedIndex == len(options)-1 { | ||||
| 			// start at the top | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/github.com/AlecAivazis/survey/v2/select.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/AlecAivazis/survey/v2/select.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -78,7 +78,7 @@ func (s *Select) OnChange(key rune, config *PromptConfig) bool { | ||||
| 		return false | ||||
|  | ||||
| 		// if the user pressed the up arrow or 'k' to emulate vim | ||||
| 	} else if key == terminal.KeyArrowUp || (s.VimMode && key == 'k') && len(options) > 0 { | ||||
| 	} else if (key == terminal.KeyArrowUp || (s.VimMode && key == 'k')) && len(options) > 0 { | ||||
| 		s.useDefault = false | ||||
|  | ||||
| 		// if we are at the top of the list | ||||
| @@ -91,7 +91,7 @@ func (s *Select) OnChange(key rune, config *PromptConfig) bool { | ||||
| 		} | ||||
|  | ||||
| 		// if the user pressed down or 'j' to emulate vim | ||||
| 	} else if key == terminal.KeyArrowDown || (s.VimMode && key == 'j') && len(options) > 0 { | ||||
| 	} else if (key == terminal.KeyTab || key == terminal.KeyArrowDown || (s.VimMode && key == 'j')) && len(options) > 0 { | ||||
| 		s.useDefault = false | ||||
| 		// if we are at the bottom of the list | ||||
| 		if s.selectedIndex == len(options)-1 { | ||||
|   | ||||
							
								
								
									
										16
									
								
								vendor/github.com/AlecAivazis/survey/v2/survey.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/AlecAivazis/survey/v2/survey.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,8 +19,9 @@ func defaultAskOptions() *AskOptions { | ||||
| 			Err: os.Stderr, | ||||
| 		}, | ||||
| 		PromptConfig: PromptConfig{ | ||||
| 			PageSize:  7, | ||||
| 			HelpInput: "?", | ||||
| 			PageSize:     7, | ||||
| 			HelpInput:    "?", | ||||
| 			SuggestInput: "tab", | ||||
| 			Icons: IconSet{ | ||||
| 				Error: Icon{ | ||||
| 					Text:   "X", | ||||
| @@ -107,11 +108,12 @@ type Question struct { | ||||
|  | ||||
| // PromptConfig holds the global configuration for a prompt | ||||
| type PromptConfig struct { | ||||
| 	PageSize   int | ||||
| 	Icons      IconSet | ||||
| 	HelpInput  string | ||||
| 	Filter     func(filter string, option string, index int) bool | ||||
| 	KeepFilter bool | ||||
| 	PageSize     int | ||||
| 	Icons        IconSet | ||||
| 	HelpInput    string | ||||
| 	SuggestInput string | ||||
| 	Filter       func(filter string, option string, index int) bool | ||||
| 	KeepFilter   bool | ||||
| } | ||||
|  | ||||
| // Prompt is the primary interface for the objects that can take user input | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/AlecAivazis/survey/v2/terminal/runereader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/AlecAivazis/survey/v2/terminal/runereader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -302,7 +302,7 @@ func (rr *RuneReader) ReadLine(mask rune) ([]rune, error) { | ||||
| 				// restore the position of the cursor horizontally | ||||
| 				cursor.Restore() | ||||
| 				// restore the position of the cursor vertically | ||||
| 				cursor.Up(1) | ||||
| 				cursor.PreviousLine(1) | ||||
| 			} else { | ||||
| 				// restore cursor | ||||
| 				cursor.Restore() | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/AlecAivazis/survey/v2/terminal/sequences.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/AlecAivazis/survey/v2/terminal/sequences.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,6 +23,7 @@ const ( | ||||
| 	SpecialKeyEnd      = '\x11' | ||||
| 	SpecialKeyDelete   = '\x12' | ||||
| 	IgnoreKey          = '\000' | ||||
| 	KeyTab             = '\t' | ||||
| ) | ||||
|  | ||||
| func soundBell(out io.Writer) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 6543
					6543