mirror of
https://github.com/rclone/rclone.git
synced 2025-08-19 09:52:05 +02:00
config: add utility function for backend config with list and custom input
This commit is contained in:
@@ -176,7 +176,13 @@ func ConfigConfirm(state string, Default bool, name string, help string) (*Confi
|
||||
}, nil
|
||||
}
|
||||
|
||||
// ConfigChooseFixed returns a ConfigOut structure which has a list of items to choose from.
|
||||
// ConfigChooseExclusiveFixed returns a ConfigOut structure which has a list of
|
||||
// items to choose from.
|
||||
//
|
||||
// Possible items must be supplied as a fixed list.
|
||||
//
|
||||
// User is required to supply a value, and is restricted to the specified list,
|
||||
// i.e. free text input is not allowed.
|
||||
//
|
||||
// state should be the next state required
|
||||
// name is the config name for this item
|
||||
@@ -185,8 +191,8 @@ func ConfigConfirm(state string, Default bool, name string, help string) (*Confi
|
||||
//
|
||||
// It chooses the first item to be the default.
|
||||
// If there are no items then it will return an error.
|
||||
// If there is only one item it will short cut to the next state
|
||||
func ConfigChooseFixed(state string, name string, help string, items []OptionExample) (*ConfigOut, error) {
|
||||
// If there is only one item it will short cut to the next state.
|
||||
func ConfigChooseExclusiveFixed(state string, name string, help string, items []OptionExample) (*ConfigOut, error) {
|
||||
if len(items) == 0 {
|
||||
return nil, fmt.Errorf("no items found in: %s", help)
|
||||
}
|
||||
@@ -208,7 +214,13 @@ func ConfigChooseFixed(state string, name string, help string, items []OptionExa
|
||||
return choose, nil
|
||||
}
|
||||
|
||||
// ConfigChoose returns a ConfigOut structure which has a list of items to choose from.
|
||||
// ConfigChooseExclusive returns a ConfigOut structure which has a list of
|
||||
// items to choose from.
|
||||
//
|
||||
// Possible items are retrieved from a supplied function.
|
||||
//
|
||||
// User is required to supply a value, and is restricted to the specified list,
|
||||
// i.e. free text input is not allowed.
|
||||
//
|
||||
// state should be the next state required
|
||||
// name is the config name for this item
|
||||
@@ -218,7 +230,60 @@ func ConfigChooseFixed(state string, name string, help string, items []OptionExa
|
||||
//
|
||||
// It chooses the first item to be the default.
|
||||
// If there are no items then it will return an error.
|
||||
// If there is only one item it will short cut to the next state
|
||||
// If there is only one item it will short cut to the next state.
|
||||
func ConfigChooseExclusive(state string, name string, help string, n int, getItem func(i int) (itemValue string, itemHelp string)) (*ConfigOut, error) {
|
||||
items := make(OptionExamples, n)
|
||||
for i := range items {
|
||||
items[i].Value, items[i].Help = getItem(i)
|
||||
}
|
||||
return ConfigChooseExclusiveFixed(state, name, help, items)
|
||||
}
|
||||
|
||||
// ConfigChooseFixed returns a ConfigOut structure which has a list of
|
||||
// suggested items.
|
||||
//
|
||||
// Suggested items must be supplied as a fixed list.
|
||||
//
|
||||
// User is required to supply a value, but is not restricted to the specified
|
||||
// list, i.e. free text input is accepted.
|
||||
//
|
||||
// state should be the next state required
|
||||
// name is the config name for this item
|
||||
// help should be the help shown to the user
|
||||
// items should be the items in the list
|
||||
//
|
||||
// It chooses the first item to be the default.
|
||||
func ConfigChooseFixed(state string, name string, help string, items []OptionExample) (*ConfigOut, error) {
|
||||
choose := &ConfigOut{
|
||||
State: state,
|
||||
Option: &Option{
|
||||
Name: name,
|
||||
Help: help,
|
||||
Examples: items,
|
||||
Required: true,
|
||||
},
|
||||
}
|
||||
if len(choose.Option.Examples) > 0 {
|
||||
choose.Option.Default = choose.Option.Examples[0].Value
|
||||
}
|
||||
return choose, nil
|
||||
}
|
||||
|
||||
// ConfigChoose returns a ConfigOut structure which has a list of suggested
|
||||
// items.
|
||||
//
|
||||
// Suggested items are retrieved from a supplied function.
|
||||
//
|
||||
// User is required to supply a value, but is not restricted to the specified
|
||||
// list, i.e. free text input is accepted.
|
||||
//
|
||||
// state should be the next state required
|
||||
// name is the config name for this item
|
||||
// help should be the help shown to the user
|
||||
// n should be the number of items in the list
|
||||
// getItem should return the items (value, help)
|
||||
//
|
||||
// It chooses the first item to be the default.
|
||||
func ConfigChoose(state string, name string, help string, n int, getItem func(i int) (itemValue string, itemHelp string)) (*ConfigOut, error) {
|
||||
items := make(OptionExamples, n)
|
||||
for i := range items {
|
||||
|
Reference in New Issue
Block a user