diff options
Diffstat (limited to 'src/backend/dialoguer.rs')
-rw-r--r-- | src/backend/dialoguer.rs | 18 |
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()? { |