valor_config/dependency/
der.rs1use super::*;
2
3impl Default for DependencyResolver {
4 fn default() -> Self {
5 Self { items: Default::default() }
6 }
7}
8
9impl Default for DependencyItem {
10 fn default() -> Self {
11 Self {
12 name: PackageName::default(),
13 version: VersionReq::default(),
14 kind: DependencyKind::Normal,
15 path: "".to_string(),
16 git: "".to_string(),
17 branch: "".to_string(),
18 tag: "".to_string(),
19 registry: "".to_string(),
20 }
21 }
22}
23
24impl Default for DependencyKind {
25 fn default() -> Self {
26 Self::Normal
27 }
28}
29
30bind_writer!(DependencyResolverWriter, DependencyResolver);
31
32impl<'i, 'de> Visitor<'de> for DependencyResolverWriter<'i> {
33 type Value = ();
34
35 fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
36 formatter.write_str("expecting a dependency resolver")
37 }
38
39 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
40 where
41 A: MapAccess<'de>,
42 {
43 while let Some((key, mut item)) = map.next_entry::<String, DependencyItem>()? {
44 match PackageName::from_str(&key) {
45 Ok(o) => {
46 item.name = o;
47 self.ptr.register(item);
48 }
49 Err(e) => Err(Error::custom(e))?,
50 }
51 }
52 Ok(())
53 }
54}
55
56bind_writer!(DependencyWriter, DependencyItem);
57
58impl<'i, 'de> Visitor<'de> for DependencyWriter<'i> {
59 type Value = ();
60
61 fn expecting(&self, formatter: &mut Formatter) -> std::fmt::Result {
62 formatter.write_str("expecting a dependency")
63 }
64
65 fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
66 where
67 E: Error,
68 {
69 match VersionReq::from_str(v) {
70 Ok(version) => {
71 self.ptr.version = version;
72 }
73 Err(s) => Err(E::custom(s.to_string()))?,
74 }
75 Ok(())
76 }
77
78 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
79 where
80 A: MapAccess<'de>,
81 {
82 while let Some(key) = map.next_key::<String>()? {
83 match key.as_str() {
84 "name" => self.ptr.name = map.next_value()?,
85 "version" => {
86 self.ptr.version = map.next_value()?;
87 }
88 "kind" => {
89 self.ptr.kind = map.next_value()?;
90 }
91 "path" => {
92 self.ptr.path = map.next_value()?;
93 }
94 "git" => {
95 self.ptr.git = map.next_value()?;
96 }
97 "branch" => {
98 self.ptr.branch = map.next_value()?;
99 }
100 "tag" => {
101 self.ptr.tag = map.next_value()?;
102 }
103 "registry" => {
104 self.ptr.registry = map.next_value()?;
105 }
106 _ => {
107 return Err(A::Error::custom(format!("Unknown key: {}", key)));
108 }
109 }
110 }
111 Ok(())
112 }
113}