diff --git a/src/macros.rs b/src/macros.rs index b36e095..4ed3b93 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -1,4 +1,4 @@ -use macro_rules_attribute::derive_alias; +use macro_rules_attribute::attribute_alias; #[allow(unused_macros)] macro_rules! match_error { @@ -24,9 +24,10 @@ macro_rules! attr_function { } } -derive_alias! { - #[derive(DefDer!)] = #[derive(Debug, Clone)]; - #[derive(Hashable!)] = #[derive(Eq, Hash)]; +attribute_alias! { + #[apply(ConfigFile!)] = #[derive(::serde::Deserialize, ::schemars::JsonSchema)]; + #[apply(Hashable!)] = #[derive(Eq,Hash)]; + #[apply(DefDer!)] = #[derive(Debug, Clone)]; } #[allow(unused_imports)] diff --git a/src/main.rs b/src/main.rs index ac21e0a..983b57b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -19,7 +19,6 @@ pub(crate) mod types; pub(crate) mod utils; use crate::{ - consts::*, prelude::*, types::{ config::{ diff --git a/src/prelude.rs b/src/prelude.rs index dc7c935..ae56b9a 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -1,4 +1,5 @@ pub(crate) use crate::{ + consts::*, macros::*, types::traits::{ FromFile as _, diff --git a/src/process/mod.rs b/src/process/mod.rs index a0e8a20..7dcbc99 100644 --- a/src/process/mod.rs +++ b/src/process/mod.rs @@ -19,15 +19,6 @@ use std::{ }; use crate::{ - consts::{ - ATTEMPTS, - FILE_MODE, - FILE_MODE_OVERWRITE, - MODE_PRIVATE, - MODE_PUBLIC, - MODE_SECRETS, - WAIT_TIME, - }, prelude::*, types::{ self, @@ -93,8 +84,8 @@ use tokio::{ remove_file, }, io::{ - AsyncReadExt, - AsyncWriteExt, + AsyncReadExt as _, + AsyncWriteExt as _, }, join, }; diff --git a/src/types/config.rs b/src/types/config.rs index 383423a..93a0c51 100644 --- a/src/types/config.rs +++ b/src/types/config.rs @@ -16,20 +16,19 @@ use crate::{ }, }; -use macro_rules_attribute::macro_rules_derive; +use macro_rules_attribute::apply; use openssl::pkey::{ PKey, Private, }; -use schemars::JsonSchema; -use serde::Deserialize; + use std::{ collections::HashMap, net::IpAddr, }; -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] #[serde(deny_unknown_fields)] pub struct General { #[serde(default = "General::default_accounts")] @@ -84,8 +83,8 @@ impl General { } -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] #[serde(deny_unknown_fields)] pub struct Eab { #[serde(rename = "eab_token", alias = "id")] @@ -101,8 +100,8 @@ impl Eab { } } -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] #[serde(deny_unknown_fields)] pub struct CA { /// Url for the directory @@ -132,8 +131,9 @@ impl CA { } } -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, Default, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] +#[derive(Default)] #[serde(deny_unknown_fields)] pub struct Site { /// The Configured Certificate Authority diff --git a/src/types/cryptography.rs b/src/types/cryptography.rs index 37c16ec..b68bd21 100644 --- a/src/types/cryptography.rs +++ b/src/types/cryptography.rs @@ -1,14 +1,10 @@ -use crate::{ - consts::RsaStrength, - prelude::*, -}; -use macro_rules_attribute::macro_rules_derive; -use schemars::JsonSchema; -use serde::Deserialize; +use crate::prelude::*; +use macro_rules_attribute::apply; -#[macro_rules_derive(DefDer)] -#[derive(Copy, Deserialize, Default, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] +#[derive(Copy, Default)] pub enum Algorithm { Rsa, Brainpool, @@ -18,8 +14,9 @@ pub enum Algorithm { } -#[macro_rules_derive(DefDer)] -#[derive(Copy, Deserialize, Default, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] +#[derive(Copy, Default)] #[serde(deny_unknown_fields)] pub enum Strength { Weak, diff --git a/src/types/dns/dnsupdate.rs b/src/types/dns/dnsupdate.rs index 52af95e..0578d52 100644 --- a/src/types/dns/dnsupdate.rs +++ b/src/types/dns/dnsupdate.rs @@ -1,9 +1,10 @@ -use macro_rules_attribute::macro_rules_derive; -use schemars::JsonSchema; -use serde::Deserialize; +use macro_rules_attribute::apply; use crate::{ - macros::DefDer, + macros::{ + ConfigFile, + DefDer, + }, types::{ self, dns::Dns, @@ -12,8 +13,8 @@ use crate::{ }, }; -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] #[serde(deny_unknown_fields)] pub struct DNSUpdateClientOptions {} @@ -23,7 +24,7 @@ impl DNSUpdateClientOptions { } } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub struct DnsUpdateHandler {} impl DnsHandler for DnsUpdateHandler { @@ -32,7 +33,7 @@ impl DnsHandler for DnsUpdateHandler { } } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub struct DnsUpdateToken {} impl DnsUpdateToken { diff --git a/src/types/dns/mod.rs b/src/types/dns/mod.rs index 144c8ef..5e28512 100644 --- a/src/types/dns/mod.rs +++ b/src/types/dns/mod.rs @@ -2,7 +2,10 @@ pub(super) mod dnsupdate; pub(super) mod pdns; use crate::{ - macros::DefDer, + macros::{ + ConfigFile, + DefDer, + }, types::{ self, dns::{ @@ -19,21 +22,19 @@ use crate::{ DnsToken, Error, }, - traits::DnsHandler, + traits::DnsHandler as _, }, }; use log::*; -use macro_rules_attribute::macro_rules_derive; +use macro_rules_attribute::apply; use reqwest::Client; -use schemars::JsonSchema; -use serde::Deserialize; use std::{ collections::HashMap, sync::Arc, }; use tokio::sync::Mutex; -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub struct Manager(Arc>, Client); impl Manager { @@ -100,8 +101,9 @@ struct InnerManager { } -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, Default, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] +#[derive(Default)] #[serde(deny_unknown_fields)] #[serde(tag = "type", rename_all = "lowercase")] pub enum Builder { @@ -111,7 +113,7 @@ pub enum Builder { None, } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub enum Dns { PowerDNS(PdnsHandler), DNSUpdate(DnsUpdateHandler), diff --git a/src/types/dns/pdns.rs b/src/types/dns/pdns.rs index ad90b7c..a8429a2 100644 --- a/src/types/dns/pdns.rs +++ b/src/types/dns/pdns.rs @@ -5,21 +5,23 @@ use std::time::{ use derive_new::new; use log::*; -use macro_rules_attribute::macro_rules_derive; +use macro_rules_attribute::apply; use reqwest::{ Client, RequestBuilder, StatusCode, Url, }; -use schemars::JsonSchema; use serde::{ Deserialize, Serialize, }; use crate::{ - macros::DefDer, + macros::{ + ConfigFile, + DefDer, + }, types::{ self, dns::Dns, @@ -31,8 +33,8 @@ use crate::{ }, }; -#[macro_rules_derive(DefDer)] -#[derive(Deserialize, JsonSchema)] +#[apply(DefDer)] +#[apply(ConfigFile)] #[serde(deny_unknown_fields)] pub struct PdnsClientOptions { api_key: String, @@ -60,7 +62,7 @@ impl PdnsClientOptions { } } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub struct PdnsHandler { client: Client, server: String, @@ -179,7 +181,7 @@ impl PdnsToken { unsafe impl Send for PdnsToken {} -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Deserialize)] #[serde(deny_unknown_fields)] pub struct PdnsError { @@ -188,7 +190,7 @@ pub struct PdnsError { pub errors: Vec, } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Serialize, new)] struct Comment { #[new(into)] @@ -207,7 +209,7 @@ impl Comment { } } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Serialize, new)] struct Record { content: String, @@ -216,7 +218,7 @@ struct Record { } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Serialize)] #[serde(tag = "changetype", rename_all = "UPPERCASE")] enum ChangeType { @@ -228,7 +230,7 @@ enum ChangeType { Delete, } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Serialize, new)] struct RRSet { name: String, @@ -239,7 +241,7 @@ struct RRSet { } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Serialize, new)] struct RecordUpdate { rrsets: Vec, diff --git a/src/types/structs.rs b/src/types/structs.rs index 0d9e3cd..3bf9d5a 100644 --- a/src/types/structs.rs +++ b/src/types/structs.rs @@ -15,7 +15,7 @@ use clap::{ Subcommand, }; use derive_new::new; -use macro_rules_attribute::macro_rules_derive; +use macro_rules_attribute::apply; use openssl::x509::X509; use reqwest::{ Client, @@ -41,7 +41,7 @@ use crate::{ }; -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Parser)] pub struct Arguments { pub config: String, @@ -49,13 +49,13 @@ pub struct Arguments { pub subcommands: Option, } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(Subcommand)] pub enum SubCommand { Schema, } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[allow(clippy::too_many_arguments)] #[derive(new)] pub struct ProcessorArgs<'a> { @@ -129,7 +129,8 @@ impl<'a: 'b, 'b> ProcessorArgs<'a> { } } -#[macro_rules_derive(DefDer, Hashable)] +#[apply(DefDer)] +#[apply(Hashable)] #[derive(PartialEq)] pub enum San { Dns(String), @@ -137,7 +138,7 @@ pub enum San { IPAddress(IpAddr), } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] #[derive(derive_new::new)] pub struct Error { pub(super) message: String, @@ -163,7 +164,7 @@ impl Error { } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub enum DnsToken { None, Pdns(Box), @@ -192,7 +193,7 @@ impl DnsToken { } } -#[macro_rules_derive(DefDer)] +#[apply(DefDer)] pub struct Certificate { pub cert: X509, pub account_id: Option, diff --git a/src/types/traits.rs b/src/types/traits.rs index 4924b40..a354d3f 100644 --- a/src/types/traits.rs +++ b/src/types/traits.rs @@ -2,16 +2,9 @@ use std::collections::HashSet; use crate::{ - consts::{ - BRAINPOOL_MIDDLE, - BRAINPOOL_STRONG, - BRAINPOOL_WEAK, - SECP_MIDDLE, - SECP_STRONG, - SECP_WEAK, - }, - types, + prelude::*, types::{ + self, cryptography::{ Algorithm, Strength, @@ -36,7 +29,7 @@ use serde::de::DeserializeOwned; use std::fmt::Debug as fmtDebug; use tokio::{ fs::File, - io::AsyncReadExt, + io::AsyncReadExt as _, }; pub trait FromFile: Default + DeserializeOwned { diff --git a/src/utils.rs b/src/utils.rs index 9541053..0ee8f7c 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -7,14 +7,7 @@ use std::{ }; use crate::{ - consts::{ - BRAINPOOL_MIDDLE, - BRAINPOOL_STRONG, - BRAINPOOL_WEAK, - SECP_MIDDLE, - SECP_STRONG, - SECP_WEAK, - }, + prelude::*, types::{ cryptography::{ Algorithm,