From 2ce91e0425449620b76659eb1bcb7433081a5ec0 Mon Sep 17 00:00:00 2001 From: Yoshihiro Sugi Date: Mon, 13 Nov 2023 22:54:47 +0900 Subject: [PATCH] feat: Allow AtpAgent to be excluded as a default feature (#79) * Update xprc, use tokio::sync::RwLock for agent * Update docs, features --- atrium-api/Cargo.toml | 10 +++++++++- atrium-api/src/did_doc.rs | 1 + atrium-api/src/lib.rs | 6 ++++-- atrium-codegen/src/generator.rs | 13 +++++-------- atrium-codegen/src/token_stream.rs | 10 ++++------ 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/atrium-api/Cargo.toml b/atrium-api/Cargo.toml index 360b21ea..f1dd7b42 100644 --- a/atrium-api/Cargo.toml +++ b/atrium-api/Cargo.toml @@ -17,10 +17,18 @@ cid = { version = "0.10.1", features = ["serde-codec"] } http = "0.2.9" serde = { version = "1.0.160", features = ["derive"] } serde_bytes = "0.11.9" -tokio = { version = "1.33.0", features = ["sync"] } +tokio = { version = "1.33.0", default-features = false, optional = true } + +[features] +default = ["agent"] +agent = ["tokio/sync"] [dev-dependencies] atrium-xrpc-client = "0.1" futures = "0.3.28" serde_json = "1.0.107" tokio = { version = "1.33.0", features = ["test-util", "macros"] } + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] diff --git a/atrium-api/src/did_doc.rs b/atrium-api/src/did_doc.rs index 04c9bf45..23e4a1ba 100644 --- a/atrium-api/src/did_doc.rs +++ b/atrium-api/src/did_doc.rs @@ -1,3 +1,4 @@ +//! Definitions for DID document types. #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct DidDocument { diff --git a/atrium-api/src/lib.rs b/atrium-api/src/lib.rs index 4ccc518c..42177886 100644 --- a/atrium-api/src/lib.rs +++ b/atrium-api/src/lib.rs @@ -1,6 +1,8 @@ -// This file is generated by atrium-codegen. DO NOT EDIT. -# ! [doc = include_str ! ("../README.md")] +#![cfg_attr(docsrs, feature(doc_cfg))] +#![doc = include_str!("../README.md")] pub use atrium_xrpc as xrpc; +#[cfg_attr(docsrs, doc(cfg(feature = "agent")))] +#[cfg(feature = "agent")] pub mod agent; pub mod app; pub mod blob; diff --git a/atrium-codegen/src/generator.rs b/atrium-codegen/src/generator.rs index 17308198..326108dd 100644 --- a/atrium-codegen/src/generator.rs +++ b/atrium-codegen/src/generator.rs @@ -127,17 +127,14 @@ pub(crate) fn generate_client( } pub(crate) fn generate_modules(outdir: &Path) -> Result, Box> { - let paths = find_dirs(outdir)?; + let mut paths = find_dirs(outdir)?; + paths.retain(|p| p.as_ref() != outdir); let mut files = Vec::with_capacity(paths.len()); // generate ".rs" files names for path in &paths { - if path.as_ref() == outdir { - files.push(outdir.join("lib.rs")); - } else { - let mut p = path.as_ref().to_path_buf(); - p.set_extension("rs"); - files.push(p); - } + let mut p = path.as_ref().to_path_buf(); + p.set_extension("rs"); + files.push(p); } // write "mod" statements for (path, filepath) in paths.iter().zip(&files) { diff --git a/atrium-codegen/src/token_stream.rs b/atrium-codegen/src/token_stream.rs index f4ba921b..880633f9 100644 --- a/atrium-codegen/src/token_stream.rs +++ b/atrium-codegen/src/token_stream.rs @@ -445,12 +445,10 @@ pub fn refs_enum(refs: &[String], name: &str, schema_id: Option<&str>) -> Result pub fn modules(names: &[String]) -> Result { let v = names .iter() - .filter_map(|s| { - if s != "lib" { - let m = format_ident!("{s}"); - Some(quote!(pub mod #m;)) - } else { - None + .map(|s| { + let m = format_ident!("{s}"); + quote! { + pub mod #m; } }) .collect_vec();