summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2024-05-02 20:48:48 +0200
committerGitHub <noreply@github.com>2024-05-02 20:48:48 +0200
commit2b7f3735bee487c97b381ad6fe1bc5e6181c932f (patch)
tree48bc99ee5dff8eb9d885522111b0a3a7eb1ca5ec
parent344af0b4d62cbcf04f92ca3acd40204947087038 (diff)
parent17ceae620fe5abd910352cc0716e920975892278 (diff)
Merge pull request #295 from matthiasbeyer/dependabot/cargo/dialoguer-0.11.0HEADmaster
build(deps): bump dialoguer from 0.10.3 to 0.11.0
-rw-r--r--Cargo.lock5
-rw-r--r--Cargo.toml2
-rw-r--r--src/command/add_command.rs49
-rw-r--r--src/error.rs3
4 files changed, 35 insertions, 24 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 0520116..ee9c8af 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -333,13 +333,14 @@ dependencies = [
[[package]]
name = "dialoguer"
-version = "0.10.3"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af3c796f3b0b408d9fd581611b47fa850821fcb84aa640b83a3c1a5be2d691f2"
+checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
dependencies = [
"console",
"shell-words",
"tempfile",
+ "thiserror",
"zeroize",
]
diff --git a/Cargo.toml b/Cargo.toml
index e0aebd5..f622a62 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -20,7 +20,7 @@ cargo_metadata = "0.18.1"
clap = { version = "4", features = [ "cargo", "derive", "wrap_help" ] }
clap_complete = "4.2.1"
comma = "1.0.0"
-dialoguer = "0.10.3"
+dialoguer = "0.11.0"
env_logger = "0.10.2"
getset = "0.1.2"
git2 = "0.16.1"
diff --git a/src/command/add_command.rs b/src/command/add_command.rs
index b70dccf..b2e6040 100644
--- a/src/command/add_command.rs
+++ b/src/command/add_command.rs
@@ -312,18 +312,19 @@ fn interactive_provide(
) -> Result<Option<(String, FragmentData)>, InteractiveError> {
match desc.fragment_type() {
FragmentDataType::Ty(FragmentDataTypeDefinite::Bool) => {
- let mut dialoguer = Confirm::new();
- dialoguer.with_prompt(format!("'{key}'?"));
- if let Some(data) = desc.default_value() {
+ let dialoguer = Confirm::new().with_prompt(format!("'{key}'?"));
+ let dialoguer = if let Some(data) = desc.default_value() {
if let FragmentData::Bool(b) = data {
- dialoguer.default(*b);
+ dialoguer.default(*b)
} else {
return Err(InteractiveError::TypeError(
desc.fragment_type().clone(),
data.clone(),
));
}
- }
+ } else {
+ dialoguer
+ };
let value = if desc.required() {
dialoguer.interact().map_err(InteractiveError::from)?
@@ -338,47 +339,49 @@ fn interactive_provide(
Ok(Some((key.to_string(), FragmentData::Bool(value))))
}
FragmentDataType::Ty(FragmentDataTypeDefinite::Int) => {
- let mut dialoguer = Input::<u64>::new();
- dialoguer.with_prompt(format!("Enter a number for '{key}'"));
+ let dialoguer = Input::<u64>::new().with_prompt(format!("Enter a number for '{key}'"));
- if let Some(data) = desc.default_value() {
+ let dialoguer = if let Some(data) = desc.default_value() {
if let FragmentData::Int(i) = data {
- dialoguer.default(*i);
+ dialoguer.default(*i)
} else {
return Err(InteractiveError::TypeError(
desc.fragment_type().clone(),
data.clone(),
));
}
- }
+ } else {
+ dialoguer
+ };
let value = dialoguer.interact_text().map_err(InteractiveError::from)?;
Ok(Some((key.to_string(), FragmentData::Int(value))))
}
FragmentDataType::Ty(FragmentDataTypeDefinite::Str) => {
- let mut dialoguer = Input::<String>::new();
- dialoguer.with_prompt(format!("Enter a text for '{key}'"));
+ let dialoguer = Input::<String>::new().with_prompt(format!("Enter a text for '{key}'"));
- if let Some(data) = desc.default_value() {
+ let dialoguer = if let Some(data) = desc.default_value() {
if let FragmentData::Str(s) = data {
- dialoguer.default(s.to_string());
+ dialoguer.default(s.to_string())
} else {
return Err(InteractiveError::TypeError(
desc.fragment_type().clone(),
data.clone(),
));
}
- }
+ } else {
+ dialoguer
+ };
let value = dialoguer.interact_text().map_err(InteractiveError::from)?;
Ok(Some((key.to_string(), FragmentData::Str(value))))
}
FragmentDataType::OneOf(possible_values) => {
- let mut dialoguer = Select::new();
- dialoguer.items(possible_values);
- dialoguer.with_prompt("Select one");
+ let dialoguer = Select::new()
+ .items(possible_values)
+ .with_prompt("Select one");
- if let Some(default_value) = desc.default_value() {
+ let dialoguer = if let Some(default_value) = desc.default_value() {
if let FragmentData::Str(default_value) = default_value {
if let Some(default_idx) = possible_values
.iter()
@@ -386,7 +389,9 @@ fn interactive_provide(
.find(|(_, elmt)| *elmt == default_value)
.map(|(i, _)| i)
{
- dialoguer.default(default_idx);
+ dialoguer.default(default_idx)
+ } else {
+ dialoguer
}
} else {
return Err(InteractiveError::TypeError(
@@ -394,7 +399,9 @@ fn interactive_provide(
default_value.clone(),
));
}
- }
+ } else {
+ dialoguer
+ };
let value_idx = dialoguer.interact().map_err(InteractiveError::from)?;
let value = possible_values
diff --git a/src/error.rs b/src/error.rs
index a7ded38..28f773b 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -166,4 +166,7 @@ pub enum InteractiveError {
#[error("Index error: Tried to select entry {}, but list has only {}", .0, .1)]
IndexError(usize, usize),
+
+ #[error(transparent)]
+ Dialoguer(#[from] dialoguer::Error),
}