From 5f5f0b4088e89592150a781406bca940fba17dda Mon Sep 17 00:00:00 2001 From: Jeremy HERGAULT Date: Tue, 9 Jun 2026 10:37:49 +0200 Subject: [PATCH] fix: replace aquamarine with simple mermaid to solve deny error Signed-off-by: Jeremy HERGAULT --- Cargo.toml | 3 +- cargo-prosa/Cargo.toml | 1 - prosa/Cargo.toml | 2 +- prosa/src/core/adaptor.rs | 12 +---- prosa/src/core/diagrams/adaptor.mmd | 8 +++ prosa/src/core/diagrams/main_bus.mmd | 20 ++++++++ prosa/src/core/diagrams/msg.mmd | 7 +++ prosa/src/core/diagrams/proc.mmd | 12 +++++ prosa/src/core/main.rs | 24 +-------- prosa/src/core/msg.rs | 11 +---- prosa/src/core/proc.rs | 16 +----- prosa/src/io/diagrams/listener_tcp.mmd | 5 ++ prosa/src/io/diagrams/listener_tls.mmd | 5 ++ prosa/src/io/diagrams/stream_openssl.mmd | 5 ++ .../src/io/diagrams/stream_openssl_proxy.mmd | 7 +++ prosa/src/io/diagrams/stream_tcp.mmd | 5 ++ prosa/src/io/diagrams/stream_tcp_proxy.mmd | 7 +++ prosa/src/io/diagrams/stream_unix.mmd | 5 ++ prosa/src/io/listener.rs | 18 +------ prosa/src/io/stream.rs | 49 ++----------------- 20 files changed, 100 insertions(+), 122 deletions(-) create mode 100644 prosa/src/core/diagrams/adaptor.mmd create mode 100644 prosa/src/core/diagrams/main_bus.mmd create mode 100644 prosa/src/core/diagrams/msg.mmd create mode 100644 prosa/src/core/diagrams/proc.mmd create mode 100644 prosa/src/io/diagrams/listener_tcp.mmd create mode 100644 prosa/src/io/diagrams/listener_tls.mmd create mode 100644 prosa/src/io/diagrams/stream_openssl.mmd create mode 100644 prosa/src/io/diagrams/stream_openssl_proxy.mmd create mode 100644 prosa/src/io/diagrams/stream_tcp.mmd create mode 100644 prosa/src/io/diagrams/stream_tcp_proxy.mmd create mode 100644 prosa/src/io/diagrams/stream_unix.mmd diff --git a/Cargo.toml b/Cargo.toml index e2b72d0..4612d8c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ license = "LGPL-3.0-or-later" include = [ "**/*.rs", + "**/*.mmd", "Cargo.toml", "*assets/*", "COPYRIGHT", @@ -25,7 +26,7 @@ include = [ prosa-utils = { version = "0.4.3", path = "prosa_utils" } prosa-macros = { version = "0.4.2", path = "prosa_macros" } thiserror = "2" -aquamarine = "0.6" +simple-mermaid = "0.2" bytes = "1" chrono = "0.4" serde = { version = "1", features = ["derive"] } diff --git a/cargo-prosa/Cargo.toml b/cargo-prosa/Cargo.toml index faa198a..9a2c726 100644 --- a/cargo-prosa/Cargo.toml +++ b/cargo-prosa/Cargo.toml @@ -17,7 +17,6 @@ path = "src/main.rs" unwrap_used = "deny" [dependencies] -aquamarine.workspace = true clap = "4" clap_complete = "4" serde.workspace = true diff --git a/prosa/Cargo.toml b/prosa/Cargo.toml index bfa4f9f..978345f 100644 --- a/prosa/Cargo.toml +++ b/prosa/Cargo.toml @@ -51,7 +51,7 @@ thiserror.workspace = true url = { version = "2", features = ["serde"] } rlimit = "0.11" -aquamarine.workspace = true +simple-mermaid.workspace = true openssl = { workspace = true, optional = true } tokio.workspace = true diff --git a/prosa/src/core/adaptor.rs b/prosa/src/core/adaptor.rs index d08c8eb..c190843 100644 --- a/prosa/src/core/adaptor.rs +++ b/prosa/src/core/adaptor.rs @@ -19,20 +19,10 @@ use std::{fmt, pin::Pin}; /// Implement the trait [`Adaptor`]. pub use prosa_macros::Adaptor; -#[cfg_attr(doc, aquamarine::aquamarine)] /// Generic ProSA Adaptor. /// Define generic function call that are use by every processor. /// -/// ```mermaid -/// graph LR -/// task[Task] -/// adaptor[Adaptor] -/// bus([Internal service bus]) -/// adaptor <--> bus -/// subgraph proc[ProSA Processor] -/// task <--> adaptor -/// end -/// ``` +#[doc = simple_mermaid::mermaid!("diagrams/adaptor.mmd")] /// /// To implement the adaptor without init or terminate function you derive it by default: /// ``` diff --git a/prosa/src/core/diagrams/adaptor.mmd b/prosa/src/core/diagrams/adaptor.mmd new file mode 100644 index 0000000..e82ce8d --- /dev/null +++ b/prosa/src/core/diagrams/adaptor.mmd @@ -0,0 +1,8 @@ +graph LR + task[Task] + adaptor[Adaptor] + bus([Internal service bus]) + adaptor <--> bus + subgraph proc[ProSA Processor] + task <--> adaptor + end diff --git a/prosa/src/core/diagrams/main_bus.mmd b/prosa/src/core/diagrams/main_bus.mmd new file mode 100644 index 0000000..771f46f --- /dev/null +++ b/prosa/src/core/diagrams/main_bus.mmd @@ -0,0 +1,20 @@ +graph LR + table>Service table] + main_queue[(Main queue)] + main_task[Main task] + proc_queue[(Processor queue)] + proc_task[Processor task] + proc_io[Processor IOs] + + table <--> main_task + table --> proc_task + proc_task --> main_queue + + subgraph main[ProSA Main processor] + main_queue --> main_task + end + + subgraph proc[ProSA Processor] + proc_queue --> proc_task + proc_task <--> proc_io + end diff --git a/prosa/src/core/diagrams/msg.mmd b/prosa/src/core/diagrams/msg.mmd new file mode 100644 index 0000000..4f8e7f4 --- /dev/null +++ b/prosa/src/core/diagrams/msg.mmd @@ -0,0 +1,7 @@ +sequenceDiagram + Client->>Service: RequestMsg + alt is ok + Service->>Client: ResponseMsg + else is error + Service->>Client: ErrorMsg + end diff --git a/prosa/src/core/diagrams/proc.mmd b/prosa/src/core/diagrams/proc.mmd new file mode 100644 index 0000000..cbb6854 --- /dev/null +++ b/prosa/src/core/diagrams/proc.mmd @@ -0,0 +1,12 @@ +graph LR + bus([Internal service bus]) + queue[(Processor queue)] + adaptor[Adaptor] + task[Task] + ext(External system) + bus <--> adaptor + task <--> ext + subgraph proc[ProSA Processor] + queue <--> task + adaptor <--> task + end diff --git a/prosa/src/core/main.rs b/prosa/src/core/main.rs index 9cc6a53..92cc947 100644 --- a/prosa/src/core/main.rs +++ b/prosa/src/core/main.rs @@ -41,34 +41,12 @@ where fn run(self) -> impl std::future::Future + Send; } -#[cfg_attr(doc, aquamarine::aquamarine)] /// Main ProSA task to handle every task spawn in the ProSA /// Use an internal ProSA service bus /// Must be run only one time in the ProSA /// /// This is the core strucutre of ProSA. -/// ```mermaid -/// graph LR -/// table>Service table] -/// main_queue[(Main queue)] -/// main_task[Main task] -/// proc_queue[(Processor queue)] -/// proc_task[Processor task] -/// proc_io[Processor IOs] -/// -/// table <--> main_task -/// table --> proc_task -/// proc_task --> main_queue -/// -/// subgraph main[ProSA Main processor] -/// main_queue --> main_task -/// end -/// -/// subgraph proc[ProSA Processor] -/// proc_queue --> proc_task -/// proc_task <--> proc_io -/// end -/// ``` +#[doc = simple_mermaid::mermaid!("diagrams/main_bus.mmd")] #[derive(Clone, Debug)] pub struct Main where diff --git a/prosa/src/core/msg.rs b/prosa/src/core/msg.rs index c6b9641..1546ba9 100644 --- a/prosa/src/core/msg.rs +++ b/prosa/src/core/msg.rs @@ -61,18 +61,9 @@ where Shutdown, } -#[cfg_attr(doc, aquamarine::aquamarine)] /// Trait that define a ProSA Msg use to send transactions /// -/// ```mermaid -/// sequenceDiagram -/// Client->>Service: RequestMsg -/// alt is ok -/// Service->>Client: ResponseMsg -/// else is error -/// Service->>Client: ErrorMsg -/// end -/// ``` +#[doc = simple_mermaid::mermaid!("diagrams/msg.mmd")] pub trait Msg where M: Sized + Clone + Tvf, diff --git a/prosa/src/core/proc.rs b/prosa/src/core/proc.rs index dd91262..e9f72bb 100644 --- a/prosa/src/core/proc.rs +++ b/prosa/src/core/proc.rs @@ -537,24 +537,10 @@ macro_rules! proc_run { }; } -#[cfg_attr(doc, aquamarine::aquamarine)] /// Generic trait to define ProSA processor /// /// It regroup several composant: -/// ```mermaid -/// graph LR -/// bus([Internal service bus]) -/// queue[(Processor queue)] -/// adaptor[Adaptor] -/// task[Task] -/// ext(External system) -/// bus <--> adaptor -/// task <--> ext -/// subgraph proc[ProSA Processor] -/// queue <--> task -/// adaptor <--> task -/// end -/// ``` +#[doc = simple_mermaid::mermaid!("diagrams/proc.mmd")] pub trait Proc: ProcBusParam + ProcEpilogue where A: Adaptor, diff --git a/prosa/src/io/diagrams/listener_tcp.mmd b/prosa/src/io/diagrams/listener_tcp.mmd new file mode 100644 index 0000000..6b8b58d --- /dev/null +++ b/prosa/src/io/diagrams/listener_tcp.mmd @@ -0,0 +1,5 @@ +graph LR + clients[Clients] + server[Server] + + clients -- TCP --> server diff --git a/prosa/src/io/diagrams/listener_tls.mmd b/prosa/src/io/diagrams/listener_tls.mmd new file mode 100644 index 0000000..1039af8 --- /dev/null +++ b/prosa/src/io/diagrams/listener_tls.mmd @@ -0,0 +1,5 @@ +graph LR + clients[Clients] + server[Server] + + clients -- TLS --> server diff --git a/prosa/src/io/diagrams/stream_openssl.mmd b/prosa/src/io/diagrams/stream_openssl.mmd new file mode 100644 index 0000000..c5e942b --- /dev/null +++ b/prosa/src/io/diagrams/stream_openssl.mmd @@ -0,0 +1,5 @@ +graph LR + client[Client] + server[Server] + + client -- TCP+TLS --> server diff --git a/prosa/src/io/diagrams/stream_openssl_proxy.mmd b/prosa/src/io/diagrams/stream_openssl_proxy.mmd new file mode 100644 index 0000000..155289e --- /dev/null +++ b/prosa/src/io/diagrams/stream_openssl_proxy.mmd @@ -0,0 +1,7 @@ +graph LR + client[Client] + server[Server] + proxy[Proxy] + + client -- TCP+TLS --> proxy + proxy --> server diff --git a/prosa/src/io/diagrams/stream_tcp.mmd b/prosa/src/io/diagrams/stream_tcp.mmd new file mode 100644 index 0000000..f9c384e --- /dev/null +++ b/prosa/src/io/diagrams/stream_tcp.mmd @@ -0,0 +1,5 @@ +graph LR + client[Client] + server[Server] + + client -- TCP --> server diff --git a/prosa/src/io/diagrams/stream_tcp_proxy.mmd b/prosa/src/io/diagrams/stream_tcp_proxy.mmd new file mode 100644 index 0000000..4878b4a --- /dev/null +++ b/prosa/src/io/diagrams/stream_tcp_proxy.mmd @@ -0,0 +1,7 @@ +graph LR + client[Client] + server[Server] + proxy[Proxy] + + client -- TCP --> proxy + proxy --> server diff --git a/prosa/src/io/diagrams/stream_unix.mmd b/prosa/src/io/diagrams/stream_unix.mmd new file mode 100644 index 0000000..d9f19f1 --- /dev/null +++ b/prosa/src/io/diagrams/stream_unix.mmd @@ -0,0 +1,5 @@ +graph LR + client[Client] + server[Server] + + client -- UNIX --> server diff --git a/prosa/src/io/listener.rs b/prosa/src/io/listener.rs index a9f1c0b..879d9b5 100644 --- a/prosa/src/io/listener.rs +++ b/prosa/src/io/listener.rs @@ -86,16 +86,9 @@ impl StreamListener { } } - #[cfg_attr(doc, aquamarine::aquamarine)] /// Accept TCP connections from clients /// - /// ```mermaid - /// graph LR - /// clients[Clients] - /// server[Server] - /// - /// clients -- TCP --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/listener_tcp.mmd")] /// /// ``` /// use tokio::io; @@ -118,17 +111,10 @@ impl StreamListener { } #[cfg(feature = "openssl")] - #[cfg_attr(doc, aquamarine::aquamarine)] /// Set an OpenSSL acceptor to accept SSL connections from clients /// By default, the SSL connect timeout is 3 seconds /// - /// ```mermaid - /// graph LR - /// clients[Clients] - /// server[Server] - /// - /// clients -- TLS --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/listener_tls.mmd")] /// /// ``` /// use tokio::io; diff --git a/prosa/src/io/stream.rs b/prosa/src/io/stream.rs index cc894d4..510fa86 100644 --- a/prosa/src/io/stream.rs +++ b/prosa/src/io/stream.rs @@ -107,16 +107,9 @@ impl Stream { } #[cfg(target_family = "unix")] - #[cfg_attr(doc, aquamarine::aquamarine)] /// Connect a UNIX socket on a path /// - /// ```mermaid - /// graph LR - /// client[Client] - /// server[Server] - /// - /// client -- UNIX --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/stream_unix.mmd")] /// /// ``` /// use tokio::io; @@ -138,16 +131,9 @@ impl Stream { Ok(Stream::Unix(tokio::net::UnixStream::connect(path).await?)) } - #[cfg_attr(doc, aquamarine::aquamarine)] /// Connect a TCP socket to a distant /// - /// ```mermaid - /// graph LR - /// client[Client] - /// server[Server] - /// - /// client -- TCP --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/stream_tcp.mmd")] /// /// ``` /// use tokio::io; @@ -194,16 +180,9 @@ impl Stream { } #[cfg(feature = "openssl")] - #[cfg_attr(doc, aquamarine::aquamarine)] /// Connect an OpenSSL socket to a distant /// - /// ```mermaid - /// graph LR - /// client[Client] - /// server[Server] - /// - /// client -- TCP+TLS --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/stream_openssl.mmd")] /// /// ``` /// use tokio::io; @@ -278,18 +257,9 @@ impl Stream { } #[cfg(feature = "http-proxy")] - #[cfg_attr(doc, aquamarine::aquamarine)] /// Connect a TCP socket to a distant through an HTTP proxy /// - /// ```mermaid - /// graph LR - /// client[Client] - /// server[Server] - /// proxy[Proxy] - /// - /// client -- TCP --> proxy - /// proxy --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/stream_tcp_proxy.mmd")] /// /// ``` /// use tokio::io; @@ -316,18 +286,9 @@ impl Stream { } #[cfg(all(feature = "openssl", feature = "http-proxy"))] - #[cfg_attr(doc, aquamarine::aquamarine)] /// Connect an OpenSSL socket to a distant through an HTTP proxy /// - /// ```mermaid - /// graph LR - /// client[Client] - /// server[Server] - /// proxy[Proxy] - /// - /// client -- TCP+TLS --> proxy - /// proxy --> server - /// ``` + #[doc = simple_mermaid::mermaid!("diagrams/stream_openssl_proxy.mmd")] /// /// ``` /// use tokio::io;