summaryrefslogtreecommitdiffstats
path: root/src/backend/dialoguer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/dialoguer.rs')
-rw-r--r--src/backend/dialoguer.rs18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/backend/dialoguer.rs b/src/backend/dialoguer.rs
index 564750f..53eae8d 100644
--- a/src/backend/dialoguer.rs
+++ b/src/backend/dialoguer.rs
@@ -101,11 +101,15 @@ impl<T> ValueBuilder for DialoguerValueBuilder<T>
{
type Output = T;
- fn build_value(&self, question: &str) -> Result<Self::Output> {
- dialoguer::Input::<T>::new()
- .with_prompt(question)
- .interact_text()
- .map_err(crate::error::IOBError::from)
+ fn build_value(&self, question: &str, default: Option<&Self::Output>) -> Result<Self::Output> {
+ let mut dia = dialoguer::Input::<T>::new();
+ dia.with_prompt(question);
+
+ if let Some(def) = default {
+ dia.with_initial_text(def.to_string());
+ }
+
+ dia.interact_text().map_err(crate::error::IOBError::from)
}
}
@@ -121,7 +125,7 @@ impl<T: BuildableValue> CollectionBuilder for DialoguerOptionValueBuilder<T> {
if b {
T::builder(DialoguerBackend)
- .build_value(value_desc)
+ .build_value(value_desc, None)
.map(Some)
} else {
Ok(None)
@@ -140,7 +144,7 @@ impl<T> CollectionBuilder for DialoguerVecBuilder<T>
let mut buf = vec![];
loop {
- let v: T = T::builder(DialoguerBackend).build_value(value_desc)?;
+ let v: T = T::builder(DialoguerBackend).build_value(value_desc, None)?;
buf.push(v);
if !dialoguer::Input::<bool>::new().with_prompt("Another one?").interact_text()? {