wick_config/v1/
helpers.rs1use std::str::FromStr;
2
3use serde::ser::SerializeMap;
4use serde::{Deserialize, Serialize, Serializer};
5
6mod flow_ast;
7mod interface_types;
8
9#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
10pub struct LocationReference(pub(super) String);
11
12#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
13
14pub struct Glob(pub(super) String);
15
16#[allow(clippy::from_over_into)]
17impl Into<String> for super::TypeSignature {
18 fn into(self) -> String {
19 let ty: wick_interface_types::Type = self.try_into().unwrap();
20 ty.to_string()
21 }
22}
23
24#[allow(clippy::from_over_into)]
25impl Into<String> for super::ConnectionDefinition {
26 fn into(self) -> String {
27 let ty: flow_expression_parser::ast::ConnectionExpression = self.try_into().unwrap();
28 ty.to_string()
29 }
30}
31
32#[allow(clippy::from_over_into)]
33impl Into<String> for super::ComponentReference {
34 fn into(self) -> String {
35 self.id
36 }
37}
38
39pub(super) fn serialize_component_expression<S>(
40 value: &super::ComponentOperationExpression,
41 s: S,
42) -> Result<S::Ok, S::Error>
43where
44 S: Serializer,
45{
46 let name = match &value.component {
47 super::ComponentDefinition::ComponentReference(r) => &r.id,
48 _ => return value.serialize(s),
49 };
50
51 if value.with.is_none() {
52 s.serialize_str(&format!("{}::{}", name, value.name))
53 } else {
54 let mut m = if value.timeout.is_some() {
55 s.serialize_map(Some(4))?
56 } else {
57 s.serialize_map(Some(3))?
58 };
59 m.serialize_entry("name", &value.name)?;
60 m.serialize_entry("component", &name)?;
61 m.serialize_entry("with", &value.with)?;
62 if let Some(timeout) = &value.timeout {
63 m.serialize_entry("timeout", timeout)?;
64 }
65 m.end()
66 }
67}