diff --git a/src/task/mod.rs b/src/task/mod.rs index 66c4ee48e3..e0068a77e3 100644 --- a/src/task/mod.rs +++ b/src/task/mod.rs @@ -15,7 +15,6 @@ use globset::GlobBuilder; use indexmap::IndexMap; use itertools::Itertools; use petgraph::prelude::*; -use serde::de; use serde_derive::{Deserialize, Serialize}; use std::borrow::Cow; use std::cmp::Ordering; @@ -125,10 +124,10 @@ pub struct Task { pub timeout: Option, // normal type - #[serde(default, deserialize_with = "deserialize_run_entries")] + #[serde(default, deserialize_with = "deserialize_arr")] pub run: Vec, - #[serde(default, deserialize_with = "deserialize_run_entries")] + #[serde(default, deserialize_with = "deserialize_arr")] pub run_windows: Vec, // command type @@ -722,50 +721,6 @@ impl Default for Task { } } -pub fn deserialize_run_entries<'de, D>( - deserializer: D, -) -> std::result::Result, D::Error> -where - D: de::Deserializer<'de>, -{ - struct RunEntriesVisitor; - impl<'de> de::Visitor<'de> for RunEntriesVisitor { - type Value = Vec; - fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result { - formatter.write_str("string | object | array of string/object") - } - - fn visit_str(self, v: &str) -> Result - where - E: de::Error, - { - Ok(vec![RunEntry::Script(v.to_string())]) - } - - fn visit_map(self, map: M) -> std::result::Result - where - M: de::MapAccess<'de>, - { - let entry: RunEntry = - de::Deserialize::deserialize(de::value::MapAccessDeserializer::new(map))?; - Ok(vec![entry]) - } - - fn visit_seq(self, mut seq: S) -> std::result::Result - where - S: de::SeqAccess<'de>, - { - let mut v = vec![]; - while let Some(entry) = seq.next_element::()? { - v.push(entry); - } - Ok(v) - } - } - - deserializer.deserialize_any(RunEntriesVisitor) -} - impl Display for Task { fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { let cmd = self