use serde::Deserialize;
pub mod audit;
pub mod challenge;
pub mod filter;
pub mod ipam;
pub mod jobs;
pub mod metrics;
pub mod notify;
pub mod profile;
pub mod proxy;
pub mod server;
pub mod signer;
pub use audit::*;
pub use challenge::*;
pub use filter::*;
pub use ipam::*;
pub use jobs::*;
pub use metrics::*;
pub use notify::*;
pub use profile::*;
pub use proxy::*;
pub use server::*;
pub use signer::*;
pub(crate) fn empty_string_is_no_values<'de, D>(deserializer: D) -> Result<Vec<String>, D::Error>
where
D: serde::Deserializer<'de>,
{
let values = Vec::<String>::deserialize(deserializer)?;
Ok(match values.as_slice() {
[only] if only.is_empty() => Vec::new(),
_ => values,
})
}