From c49b6ba44c554df6445b949007bc7231c8a614fe Mon Sep 17 00:00:00 2001 From: Joe McCain III Date: Sun, 27 Nov 2022 01:48:49 +0000 Subject: [PATCH 1/5] Update --- actors/Cargo.toml | 32 +++++++++++ actors/README.md | 2 + actors/src/agents/agent.rs | 56 +++++++++++++++++++ .../components => actors/src}/agents/mod.rs | 0 .../src}/catalysts/catalyst.rs | 0 .../actors => actors/src}/catalysts/mod.rs | 0 .../core => actors/src}/contexts/context.rs | 0 {core/src/core => actors/src}/contexts/mod.rs | 0 .../src}/contexts/specs/configurable.rs | 0 .../src}/contexts/specs/contextual.rs | 0 .../core => actors/src}/contexts/specs/mod.rs | 0 .../actors => actors/src}/handlers/files.rs | 0 .../src/actors => actors/src}/handlers/mod.rs | 0 .../src}/justify/justifiable.rs | 0 .../src/actors => actors/src}/justify/mod.rs | 0 actors/src/lib.rs | 14 +++++ .../src}/messages/message.rs | 0 .../components => actors/src}/messages/mod.rs | 0 {core/src/core => actors/src}/states/mod.rs | 0 {core/src/core => actors/src}/states/state.rs | 0 actors/tests/default.rs | 9 +++ core/src/{components => }/accounts/account.rs | 0 core/src/{components => }/accounts/mod.rs | 0 core/src/actors/mod.rs | 11 ---- core/src/components/agents/agent.rs | 37 ------------ core/src/components/mod.rs | 13 ----- core/src/core/mod.rs | 14 ----- core/src/{core => }/errors/error.rs | 0 core/src/{core => }/errors/mod.rs | 2 +- core/src/{components => }/events/event.rs | 0 core/src/{components => }/events/misc/mod.rs | 0 .../{components => }/events/misc/payload.rs | 0 .../{components => }/events/misc/variants.rs | 0 core/src/{components => }/events/mod.rs | 0 core/src/{actors => }/extract/extractor.rs | 2 +- core/src/{actors => }/extract/files/agent.rs | 0 .../{actors => }/extract/files/interface.rs | 0 core/src/{actors => }/extract/files/mod.rs | 0 core/src/{actors => }/extract/mod.rs | 0 core/src/lib.rs | 17 ++++-- core/src/{components => }/loggers/logger.rs | 0 core/src/{components => }/loggers/mod.rs | 0 core/src/{components => }/networking/mod.rs | 0 core/src/{components => }/networking/proxy.rs | 0 .../src/{components => }/networking/server.rs | 2 +- core/src/{actors => }/parse/basic.rs | 0 core/src/{actors => }/parse/mod.rs | 0 core/src/{core => }/primitives/address.rs | 0 core/src/{core => }/primitives/appellation.rs | 0 core/src/{core => }/primitives/constants.rs | 0 core/src/{core => }/primitives/ids.rs | 2 +- core/src/{core => }/primitives/links.rs | 2 +- core/src/{core => }/primitives/mod.rs | 0 core/src/{core => }/primitives/timestamp.rs | 0 core/src/{core => }/primitives/types.rs | 0 core/src/{components => }/providers/mod.rs | 0 .../providers/networks/ethereum.rs | 0 .../providers/networks/mod.rs | 0 .../{components => }/providers/provider.rs | 0 .../providers/storage/cache.rs | 0 .../providers/storage/database.rs | 0 .../{components => }/providers/storage/mod.rs | 0 .../{components => }/providers/storage/s3.rs | 2 +- core/src/{core => }/specs/addressable.rs | 0 core/src/{core => }/specs/mod.rs | 1 - core/src/{core => }/utils/mod.rs | 0 core/src/{core => }/utils/times.rs | 0 crypto/Cargo.toml | 9 ++- scsys/Cargo.toml | 4 ++ scsys/src/lib.rs | 14 +++-- scsys/tests/default.rs | 9 ++- 71 files changed, 155 insertions(+), 99 deletions(-) create mode 100644 actors/Cargo.toml create mode 100644 actors/README.md create mode 100644 actors/src/agents/agent.rs rename {core/src/components => actors/src}/agents/mod.rs (100%) rename {core/src/actors => actors/src}/catalysts/catalyst.rs (100%) rename {core/src/actors => actors/src}/catalysts/mod.rs (100%) rename {core/src/core => actors/src}/contexts/context.rs (100%) rename {core/src/core => actors/src}/contexts/mod.rs (100%) rename {core/src/core => actors/src}/contexts/specs/configurable.rs (100%) rename {core/src/core => actors/src}/contexts/specs/contextual.rs (100%) rename {core/src/core => actors/src}/contexts/specs/mod.rs (100%) rename {core/src/actors => actors/src}/handlers/files.rs (100%) rename {core/src/actors => actors/src}/handlers/mod.rs (100%) rename {core/src/actors => actors/src}/justify/justifiable.rs (100%) rename {core/src/actors => actors/src}/justify/mod.rs (100%) create mode 100644 actors/src/lib.rs rename {core/src/components => actors/src}/messages/message.rs (100%) rename {core/src/components => actors/src}/messages/mod.rs (100%) rename {core/src/core => actors/src}/states/mod.rs (100%) rename {core/src/core => actors/src}/states/state.rs (100%) create mode 100644 actors/tests/default.rs rename core/src/{components => }/accounts/account.rs (100%) rename core/src/{components => }/accounts/mod.rs (100%) delete mode 100644 core/src/actors/mod.rs delete mode 100644 core/src/components/agents/agent.rs delete mode 100644 core/src/components/mod.rs delete mode 100644 core/src/core/mod.rs rename core/src/{core => }/errors/error.rs (100%) rename core/src/{core => }/errors/mod.rs (94%) rename core/src/{components => }/events/event.rs (100%) rename core/src/{components => }/events/misc/mod.rs (100%) rename core/src/{components => }/events/misc/payload.rs (100%) rename core/src/{components => }/events/misc/variants.rs (100%) rename core/src/{components => }/events/mod.rs (100%) rename core/src/{actors => }/extract/extractor.rs (92%) rename core/src/{actors => }/extract/files/agent.rs (100%) rename core/src/{actors => }/extract/files/interface.rs (100%) rename core/src/{actors => }/extract/files/mod.rs (100%) rename core/src/{actors => }/extract/mod.rs (100%) rename core/src/{components => }/loggers/logger.rs (100%) rename core/src/{components => }/loggers/mod.rs (100%) rename core/src/{components => }/networking/mod.rs (100%) rename core/src/{components => }/networking/proxy.rs (100%) rename core/src/{components => }/networking/server.rs (96%) rename core/src/{actors => }/parse/basic.rs (100%) rename core/src/{actors => }/parse/mod.rs (100%) rename core/src/{core => }/primitives/address.rs (100%) rename core/src/{core => }/primitives/appellation.rs (100%) rename core/src/{core => }/primitives/constants.rs (100%) rename core/src/{core => }/primitives/ids.rs (97%) rename core/src/{core => }/primitives/links.rs (95%) rename core/src/{core => }/primitives/mod.rs (100%) rename core/src/{core => }/primitives/timestamp.rs (100%) rename core/src/{core => }/primitives/types.rs (100%) rename core/src/{components => }/providers/mod.rs (100%) rename core/src/{components => }/providers/networks/ethereum.rs (100%) rename core/src/{components => }/providers/networks/mod.rs (100%) rename core/src/{components => }/providers/provider.rs (100%) rename core/src/{components => }/providers/storage/cache.rs (100%) rename core/src/{components => }/providers/storage/database.rs (100%) rename core/src/{components => }/providers/storage/mod.rs (100%) rename core/src/{components => }/providers/storage/s3.rs (99%) rename core/src/{core => }/specs/addressable.rs (100%) rename core/src/{core => }/specs/mod.rs (99%) rename core/src/{core => }/utils/mod.rs (100%) rename core/src/{core => }/utils/times.rs (100%) diff --git a/actors/Cargo.toml b/actors/Cargo.toml new file mode 100644 index 00000000..19514376 --- /dev/null +++ b/actors/Cargo.toml @@ -0,0 +1,32 @@ +[package] +authors = ["FL03 (https://github.com/FL03)", "Scattered-Systems (https://github.com/scattered-systems)"] +categories = [] +description = "scsys-actors" +edition = "2021" +homepage = "https://github.com/scattered-systems/scsys/wiki" +keywords = ["core", "primitives", "scsys"] +license = "Apache-2.0" +name = "scsys-actors" +repository = "https://github.com/scattered-systems/scsys" +version = "0.1.33" # TODO: Update the package version + +[lib] +crate-type = ["cdylib", "rlib"] +test = true + +[dev-dependencies] +scsys-core = { path = "../core" } + +[dependencies] +bson = { features = ["chrono-0_4", "serde_with", "uuid-0_8"], version = "2.4.0" } +chrono = "0.4.22" +config = "0.13.2" +glob = "0.3.0" +nom = "7.1.1" +serde = { features = ["derive"], version = "1.0.147" } +serde_json = "1.0.87" +strum = { features = ["derive"], version = "0.24.1" } +url = "2.3.1" + +[package.metadata.docs.rs] +rustc-args = ["--cfg", "docsrs"] diff --git a/actors/README.md b/actors/README.md new file mode 100644 index 00000000..b02a7d1a --- /dev/null +++ b/actors/README.md @@ -0,0 +1,2 @@ +# scsys-core + diff --git a/actors/src/agents/agent.rs b/actors/src/agents/agent.rs new file mode 100644 index 00000000..0e036595 --- /dev/null +++ b/actors/src/agents/agent.rs @@ -0,0 +1,56 @@ +/* + Appellation: agent + Creator: FL03 + Description: ... Summary ... +*/ +use super::Agency; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] +pub struct Agent(T); + +impl Agent { + pub fn new(data: T) -> Self { + Self(data) + } +} + +impl Agency for Agent { + fn init() -> Self { + Self::new(Default::default()) + } + fn agent(&self) -> String { + self.to_string() + } +} + +impl std::convert::From<&Agent> for Agent { + fn from(data: &Agent) -> Self { + data.clone() + } +} + +impl std::fmt::Debug for Agent { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", serde_json::to_string_pretty(&self).unwrap()) + } +} + +impl std::fmt::Display for Agent { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", serde_json::to_string(&self).unwrap()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_default_agent() { + let a = Agent::::default(); + let b = Agent::from(&a); + + assert_eq!(&a, &b) + } +} diff --git a/core/src/components/agents/mod.rs b/actors/src/agents/mod.rs similarity index 100% rename from core/src/components/agents/mod.rs rename to actors/src/agents/mod.rs diff --git a/core/src/actors/catalysts/catalyst.rs b/actors/src/catalysts/catalyst.rs similarity index 100% rename from core/src/actors/catalysts/catalyst.rs rename to actors/src/catalysts/catalyst.rs diff --git a/core/src/actors/catalysts/mod.rs b/actors/src/catalysts/mod.rs similarity index 100% rename from core/src/actors/catalysts/mod.rs rename to actors/src/catalysts/mod.rs diff --git a/core/src/core/contexts/context.rs b/actors/src/contexts/context.rs similarity index 100% rename from core/src/core/contexts/context.rs rename to actors/src/contexts/context.rs diff --git a/core/src/core/contexts/mod.rs b/actors/src/contexts/mod.rs similarity index 100% rename from core/src/core/contexts/mod.rs rename to actors/src/contexts/mod.rs diff --git a/core/src/core/contexts/specs/configurable.rs b/actors/src/contexts/specs/configurable.rs similarity index 100% rename from core/src/core/contexts/specs/configurable.rs rename to actors/src/contexts/specs/configurable.rs diff --git a/core/src/core/contexts/specs/contextual.rs b/actors/src/contexts/specs/contextual.rs similarity index 100% rename from core/src/core/contexts/specs/contextual.rs rename to actors/src/contexts/specs/contextual.rs diff --git a/core/src/core/contexts/specs/mod.rs b/actors/src/contexts/specs/mod.rs similarity index 100% rename from core/src/core/contexts/specs/mod.rs rename to actors/src/contexts/specs/mod.rs diff --git a/core/src/actors/handlers/files.rs b/actors/src/handlers/files.rs similarity index 100% rename from core/src/actors/handlers/files.rs rename to actors/src/handlers/files.rs diff --git a/core/src/actors/handlers/mod.rs b/actors/src/handlers/mod.rs similarity index 100% rename from core/src/actors/handlers/mod.rs rename to actors/src/handlers/mod.rs diff --git a/core/src/actors/justify/justifiable.rs b/actors/src/justify/justifiable.rs similarity index 100% rename from core/src/actors/justify/justifiable.rs rename to actors/src/justify/justifiable.rs diff --git a/core/src/actors/justify/mod.rs b/actors/src/justify/mod.rs similarity index 100% rename from core/src/actors/justify/mod.rs rename to actors/src/justify/mod.rs diff --git a/actors/src/lib.rs b/actors/src/lib.rs new file mode 100644 index 00000000..6d2bb4d1 --- /dev/null +++ b/actors/src/lib.rs @@ -0,0 +1,14 @@ +/* + Appellation: scsys-core + Creator: FL03 + Description: + ... Summary ... +*/ + +pub mod agents; +pub mod catalysts; +pub mod contexts; +pub mod handlers; +pub mod justify; +pub mod messages; +pub mod states; diff --git a/core/src/components/messages/message.rs b/actors/src/messages/message.rs similarity index 100% rename from core/src/components/messages/message.rs rename to actors/src/messages/message.rs diff --git a/core/src/components/messages/mod.rs b/actors/src/messages/mod.rs similarity index 100% rename from core/src/components/messages/mod.rs rename to actors/src/messages/mod.rs diff --git a/core/src/core/states/mod.rs b/actors/src/states/mod.rs similarity index 100% rename from core/src/core/states/mod.rs rename to actors/src/states/mod.rs diff --git a/core/src/core/states/state.rs b/actors/src/states/state.rs similarity index 100% rename from core/src/core/states/state.rs rename to actors/src/states/state.rs diff --git a/actors/tests/default.rs b/actors/tests/default.rs new file mode 100644 index 00000000..9db165b7 --- /dev/null +++ b/actors/tests/default.rs @@ -0,0 +1,9 @@ +#[cfg(test)] +mod tests { + #[test] + fn lib_compiles() { + let f = |i: usize| i + 1; + assert_eq!(f(10), 11); + assert_ne!(f(10), 9) + } +} diff --git a/core/src/components/accounts/account.rs b/core/src/accounts/account.rs similarity index 100% rename from core/src/components/accounts/account.rs rename to core/src/accounts/account.rs diff --git a/core/src/components/accounts/mod.rs b/core/src/accounts/mod.rs similarity index 100% rename from core/src/components/accounts/mod.rs rename to core/src/accounts/mod.rs diff --git a/core/src/actors/mod.rs b/core/src/actors/mod.rs deleted file mode 100644 index a70aaf81..00000000 --- a/core/src/actors/mod.rs +++ /dev/null @@ -1,11 +0,0 @@ -/* - Appellation: actors - Creator: FL03 - Description: ... Summary ... -*/ - -pub mod catalysts; -pub mod extract; -pub mod handlers; -pub mod justify; -pub mod parse; diff --git a/core/src/components/agents/agent.rs b/core/src/components/agents/agent.rs deleted file mode 100644 index b0b35926..00000000 --- a/core/src/components/agents/agent.rs +++ /dev/null @@ -1,37 +0,0 @@ -/* - Appellation: agent - Creator: FL03 - Description: ... Summary ... -*/ -use super::Agency; -use serde::{Deserialize, Serialize}; - -#[derive(Clone, Debug, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] -pub struct Agent(T); - -impl Agent { - pub fn new(data: T) -> Self { - Self(data) - } -} - -impl Agency for Agent -where - T: Clone + Default + Serialize + ToString, -{ - fn init() -> Self { - Self::new(Default::default()) - } - fn agent(&self) -> String { - self.to_string() - } -} - -impl std::fmt::Display for Agent -where - T: Serialize, -{ - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", serde_json::to_string_pretty(&self).unwrap()) - } -} diff --git a/core/src/components/mod.rs b/core/src/components/mod.rs deleted file mode 100644 index 3dbb1740..00000000 --- a/core/src/components/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -/* - Appellation: components - Creator: FL03 - Description: ... Summary ... -*/ - -pub mod accounts; -pub mod agents; -pub mod events; -pub mod loggers; -pub mod messages; -pub mod networking; -pub mod providers; diff --git a/core/src/core/mod.rs b/core/src/core/mod.rs deleted file mode 100644 index c7b647f1..00000000 --- a/core/src/core/mod.rs +++ /dev/null @@ -1,14 +0,0 @@ -/* - Appellation: core - Creator: FL03 - Description: ... Summary ... -*/ -pub use self::{primitives::*, specs::*, utils::*}; - -pub mod contexts; -pub mod errors; -pub mod states; - -pub(crate) mod primitives; -pub(crate) mod specs; -pub(crate) mod utils; diff --git a/core/src/core/errors/error.rs b/core/src/errors/error.rs similarity index 100% rename from core/src/core/errors/error.rs rename to core/src/errors/error.rs diff --git a/core/src/core/errors/mod.rs b/core/src/errors/mod.rs similarity index 94% rename from core/src/core/errors/mod.rs rename to core/src/errors/mod.rs index 77666426..cc254b94 100644 --- a/core/src/core/errors/mod.rs +++ b/core/src/errors/mod.rs @@ -6,7 +6,7 @@ */ pub use self::error::*; -mod error; +pub(crate) mod error; #[cfg(test)] mod tests { diff --git a/core/src/components/events/event.rs b/core/src/events/event.rs similarity index 100% rename from core/src/components/events/event.rs rename to core/src/events/event.rs diff --git a/core/src/components/events/misc/mod.rs b/core/src/events/misc/mod.rs similarity index 100% rename from core/src/components/events/misc/mod.rs rename to core/src/events/misc/mod.rs diff --git a/core/src/components/events/misc/payload.rs b/core/src/events/misc/payload.rs similarity index 100% rename from core/src/components/events/misc/payload.rs rename to core/src/events/misc/payload.rs diff --git a/core/src/components/events/misc/variants.rs b/core/src/events/misc/variants.rs similarity index 100% rename from core/src/components/events/misc/variants.rs rename to core/src/events/misc/variants.rs diff --git a/core/src/components/events/mod.rs b/core/src/events/mod.rs similarity index 100% rename from core/src/components/events/mod.rs rename to core/src/events/mod.rs diff --git a/core/src/actors/extract/extractor.rs b/core/src/extract/extractor.rs similarity index 92% rename from core/src/actors/extract/extractor.rs rename to core/src/extract/extractor.rs index 2657ae6a..9831980c 100644 --- a/core/src/actors/extract/extractor.rs +++ b/core/src/extract/extractor.rs @@ -4,7 +4,7 @@ Description: ... Summary ... */ -use crate::{actors::extract::base_extractor, DEFAULT_IGNORE_CHARS}; +use crate::{extract::base_extractor, DEFAULT_IGNORE_CHARS}; use std::str::FromStr; /// Implements the formal interface for operating the extraction features diff --git a/core/src/actors/extract/files/agent.rs b/core/src/extract/files/agent.rs similarity index 100% rename from core/src/actors/extract/files/agent.rs rename to core/src/extract/files/agent.rs diff --git a/core/src/actors/extract/files/interface.rs b/core/src/extract/files/interface.rs similarity index 100% rename from core/src/actors/extract/files/interface.rs rename to core/src/extract/files/interface.rs diff --git a/core/src/actors/extract/files/mod.rs b/core/src/extract/files/mod.rs similarity index 100% rename from core/src/actors/extract/files/mod.rs rename to core/src/extract/files/mod.rs diff --git a/core/src/actors/extract/mod.rs b/core/src/extract/mod.rs similarity index 100% rename from core/src/actors/extract/mod.rs rename to core/src/extract/mod.rs diff --git a/core/src/lib.rs b/core/src/lib.rs index b69f8979..76beefe1 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -5,9 +5,18 @@ ... Summary ... */ #[doc(inline)] -pub use self::{actors::*, components::*, core::*, data::*}; +pub use self::{data::*, primitives::*, specs::*, utils::*}; + +pub mod accounts; +pub mod errors; +pub mod events; +pub mod extract; +pub mod loggers; +pub mod networking; +pub mod parse; +pub mod providers; -pub(crate) mod actors; -pub(crate) mod components; -pub(crate) mod core; pub(crate) mod data; +pub(crate) mod primitives; +pub(crate) mod specs; +pub(crate) mod utils; diff --git a/core/src/components/loggers/logger.rs b/core/src/loggers/logger.rs similarity index 100% rename from core/src/components/loggers/logger.rs rename to core/src/loggers/logger.rs diff --git a/core/src/components/loggers/mod.rs b/core/src/loggers/mod.rs similarity index 100% rename from core/src/components/loggers/mod.rs rename to core/src/loggers/mod.rs diff --git a/core/src/components/networking/mod.rs b/core/src/networking/mod.rs similarity index 100% rename from core/src/components/networking/mod.rs rename to core/src/networking/mod.rs diff --git a/core/src/components/networking/proxy.rs b/core/src/networking/proxy.rs similarity index 100% rename from core/src/components/networking/proxy.rs rename to core/src/networking/proxy.rs diff --git a/core/src/components/networking/server.rs b/core/src/networking/server.rs similarity index 96% rename from core/src/components/networking/server.rs rename to core/src/networking/server.rs index 9d4fb09c..ef7904ca 100644 --- a/core/src/components/networking/server.rs +++ b/core/src/networking/server.rs @@ -4,7 +4,7 @@ Description: ... Summary ... */ -use crate::actors::extract::Extractor; +use crate::extract::Extractor; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] diff --git a/core/src/actors/parse/basic.rs b/core/src/parse/basic.rs similarity index 100% rename from core/src/actors/parse/basic.rs rename to core/src/parse/basic.rs diff --git a/core/src/actors/parse/mod.rs b/core/src/parse/mod.rs similarity index 100% rename from core/src/actors/parse/mod.rs rename to core/src/parse/mod.rs diff --git a/core/src/core/primitives/address.rs b/core/src/primitives/address.rs similarity index 100% rename from core/src/core/primitives/address.rs rename to core/src/primitives/address.rs diff --git a/core/src/core/primitives/appellation.rs b/core/src/primitives/appellation.rs similarity index 100% rename from core/src/core/primitives/appellation.rs rename to core/src/primitives/appellation.rs diff --git a/core/src/core/primitives/constants.rs b/core/src/primitives/constants.rs similarity index 100% rename from core/src/core/primitives/constants.rs rename to core/src/primitives/constants.rs diff --git a/core/src/core/primitives/ids.rs b/core/src/primitives/ids.rs similarity index 97% rename from core/src/core/primitives/ids.rs rename to core/src/primitives/ids.rs index 3c55738b..761377b6 100644 --- a/core/src/core/primitives/ids.rs +++ b/core/src/primitives/ids.rs @@ -4,7 +4,7 @@ Description: ... Summary ... */ -use crate::core::BsonOid; +use crate::BsonOid; use serde::{Deserialize, Serialize}; use strum::{EnumString, EnumVariantNames}; diff --git a/core/src/core/primitives/links.rs b/core/src/primitives/links.rs similarity index 95% rename from core/src/core/primitives/links.rs rename to core/src/primitives/links.rs index 71b9e7d0..393a2a27 100644 --- a/core/src/core/primitives/links.rs +++ b/core/src/primitives/links.rs @@ -3,7 +3,7 @@ Creator: FL03 Description: */ -use crate::core::Result; +use crate::Result; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/core/src/core/primitives/mod.rs b/core/src/primitives/mod.rs similarity index 100% rename from core/src/core/primitives/mod.rs rename to core/src/primitives/mod.rs diff --git a/core/src/core/primitives/timestamp.rs b/core/src/primitives/timestamp.rs similarity index 100% rename from core/src/core/primitives/timestamp.rs rename to core/src/primitives/timestamp.rs diff --git a/core/src/core/primitives/types.rs b/core/src/primitives/types.rs similarity index 100% rename from core/src/core/primitives/types.rs rename to core/src/primitives/types.rs diff --git a/core/src/components/providers/mod.rs b/core/src/providers/mod.rs similarity index 100% rename from core/src/components/providers/mod.rs rename to core/src/providers/mod.rs diff --git a/core/src/components/providers/networks/ethereum.rs b/core/src/providers/networks/ethereum.rs similarity index 100% rename from core/src/components/providers/networks/ethereum.rs rename to core/src/providers/networks/ethereum.rs diff --git a/core/src/components/providers/networks/mod.rs b/core/src/providers/networks/mod.rs similarity index 100% rename from core/src/components/providers/networks/mod.rs rename to core/src/providers/networks/mod.rs diff --git a/core/src/components/providers/provider.rs b/core/src/providers/provider.rs similarity index 100% rename from core/src/components/providers/provider.rs rename to core/src/providers/provider.rs diff --git a/core/src/components/providers/storage/cache.rs b/core/src/providers/storage/cache.rs similarity index 100% rename from core/src/components/providers/storage/cache.rs rename to core/src/providers/storage/cache.rs diff --git a/core/src/components/providers/storage/database.rs b/core/src/providers/storage/database.rs similarity index 100% rename from core/src/components/providers/storage/database.rs rename to core/src/providers/storage/database.rs diff --git a/core/src/components/providers/storage/mod.rs b/core/src/providers/storage/mod.rs similarity index 100% rename from core/src/components/providers/storage/mod.rs rename to core/src/providers/storage/mod.rs diff --git a/core/src/components/providers/storage/s3.rs b/core/src/providers/storage/s3.rs similarity index 99% rename from core/src/components/providers/storage/s3.rs rename to core/src/providers/storage/s3.rs index 32ebcc2e..412b9708 100644 --- a/core/src/components/providers/storage/s3.rs +++ b/core/src/providers/storage/s3.rs @@ -4,7 +4,7 @@ Description: ... Summary ... */ -use crate::core::Result; +use crate::Result; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] diff --git a/core/src/core/specs/addressable.rs b/core/src/specs/addressable.rs similarity index 100% rename from core/src/core/specs/addressable.rs rename to core/src/specs/addressable.rs diff --git a/core/src/core/specs/mod.rs b/core/src/specs/mod.rs similarity index 99% rename from core/src/core/specs/mod.rs rename to core/src/specs/mod.rs index cdf28fcb..a41185e5 100644 --- a/core/src/core/specs/mod.rs +++ b/core/src/specs/mod.rs @@ -11,7 +11,6 @@ pub(crate) mod addressable; pub(crate) mod misc { use crate::{chrono_into_bson, Appellation, ChronoDateTime}; use chrono::Utc; - pub trait InputName { fn name(&self) -> String; diff --git a/core/src/core/utils/mod.rs b/core/src/utils/mod.rs similarity index 100% rename from core/src/core/utils/mod.rs rename to core/src/utils/mod.rs diff --git a/core/src/core/utils/times.rs b/core/src/utils/times.rs similarity index 100% rename from core/src/core/utils/times.rs rename to core/src/utils/times.rs diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index d8bddcc6..bf615709 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -16,11 +16,11 @@ full = ["wasm", "wasm-ext"] wasm = [] wasm-ext = [ - "rand", "ring" + "ring" ] -rand = ["getrandom/js"] -ring = ["ring/default", "ring/wasm32_c"] + +ring = ["ring/wasm32_c"] [lib] crate-type = ["cdylib", "rlib"] @@ -32,14 +32,13 @@ test = true blake3 = "1.3.1" ed25519 = { features = ["pkcs8", "serde_bytes"], version = "1.5.2" } generic-array = "0.14.6" -getrandom = { features = ["js"], optional = true, version = "0.2" } hex = "0.4.3" hex-literal = "0.3.4" itertools = "0.10.5" rand = "0.8.5" ring = { features = ["wasm32_c"], version = "0.16.20" } serde = { features = ["derive"], version = "1.0.147" } -serde_json = "1.0.88" +serde_json = "1.0.89" typenum = "1.15.0" [dev-dependencies] diff --git a/scsys/Cargo.toml b/scsys/Cargo.toml index a60b76e2..c44099fe 100644 --- a/scsys/Cargo.toml +++ b/scsys/Cargo.toml @@ -13,6 +13,7 @@ version = "0.1.33" # TODO: Update the package version [features] default = [ + "actors", "core", "crypto", "derive", @@ -20,6 +21,7 @@ default = [ "macros" ] full = [ + "actors", "core", "crypto", "gen", @@ -34,6 +36,7 @@ wasm-ext = [ "scsys-crypto/wasm-ext" ] +actors = ["scsys-actors"] core = ["scsys-core"] crypto = ["scsys-crypto/full"] derive = ["scsys-derive"] @@ -54,6 +57,7 @@ bson = { features = ["chrono-0_4", "serde_with", "uuid-0_8"], optional = true, v chrono = { optional = true, version = "0.4.22" } config = { optional = true, version = "0.13.2" } +scsys-actors = { features = [], optional = true, path = "../actors", version = "0.1.33" } scsys-core = { features = [], optional = true, path = "../core", version = "0.1.33" } scsys-crypto = { features = ["full"], optional = true, path = "../crypto", version = "0.1.33" } scsys-derive = { features = [], optional = true, path = "../derive", version = "0.1.33" } diff --git a/scsys/src/lib.rs b/scsys/src/lib.rs index a72a4e24..ec470ced 100644 --- a/scsys/src/lib.rs +++ b/scsys/src/lib.rs @@ -4,6 +4,8 @@ Description: ... Summary ... */ +#[cfg(feature = "actors")] +pub use scsys_actors as actors; #[cfg(feature = "core")] pub use scsys_core::*; #[cfg(feature = "crypto")] @@ -16,17 +18,19 @@ pub use scsys_gen as gen; pub use scsys_macros::*; pub mod prelude { - pub use super::*; - + #[cfg(feature = "actors")] + pub use super::actors::{ + agents::*, catalysts::*, contexts::*, handlers::*, justify::*, messages::*, states::*, + }; #[cfg(feature = "crypto")] pub use super::crypto::*; #[cfg(feature = "gen")] pub use super::gen::*; + pub use super::*; #[cfg(feature = "core")] pub use super::{ - accounts::*, agents::*, catalysts::*, contexts::*, errors::*, events::*, extract::*, - handlers::*, justify::*, loggers::*, messages::*, networking::*, parse::*, providers::*, - states::*, + accounts::*, errors::*, events::*, extract::*, loggers::*, networking::*, parse::*, + providers::*, }; // Extras #[cfg(feature = "bson")] diff --git a/scsys/tests/default.rs b/scsys/tests/default.rs index 9db165b7..aa11246b 100644 --- a/scsys/tests/default.rs +++ b/scsys/tests/default.rs @@ -1,9 +1,12 @@ #[cfg(test)] mod tests { + #[cfg(feature = "actors")] + use scsys::actors::agents::Agent; + #[test] fn lib_compiles() { - let f = |i: usize| i + 1; - assert_eq!(f(10), 11); - assert_ne!(f(10), 9) + let a = Agent::new(String::new()); + let b = Agent::from(&a); + assert_eq!(&a, &b) } } From 625d860b63c872b726b8884bc0e932445d283ce7 Mon Sep 17 00:00:00 2001 From: Joe McCain III Date: Sun, 27 Nov 2022 01:50:23 +0000 Subject: [PATCH 2/5] Update --- .github/dependabot.yml | 2 +- actors/Cargo.toml | 2 +- core/Cargo.toml | 2 +- crypto/Cargo.toml | 2 +- derive/Cargo.toml | 2 +- gen/Cargo.toml | 2 +- macros/Cargo.toml | 2 +- scsys/Cargo.toml | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 433feed3..f211a409 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,7 @@ updates: schedule: interval: daily - package-ecosystem: cargo - directory: /agents + directory: /actors schedule: interval: daily - package-ecosystem: cargo diff --git a/actors/Cargo.toml b/actors/Cargo.toml index 19514376..b3d4d5f5 100644 --- a/actors/Cargo.toml +++ b/actors/Cargo.toml @@ -8,7 +8,7 @@ keywords = ["core", "primitives", "scsys"] license = "Apache-2.0" name = "scsys-actors" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [lib] crate-type = ["cdylib", "rlib"] diff --git a/core/Cargo.toml b/core/Cargo.toml index b52bdc1c..c8a28364 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -8,7 +8,7 @@ keywords = ["core", "primitives", "scsys"] license = "Apache-2.0" name = "scsys-core" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [lib] crate-type = ["cdylib", "rlib"] diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index bf615709..7a664280 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -8,7 +8,7 @@ keywords = ["crypto", "scsys"] license = "Apache-2.0" name = "scsys-crypto" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [features] default = ["wasm"] diff --git a/derive/Cargo.toml b/derive/Cargo.toml index 21953996..95f09e9c 100644 --- a/derive/Cargo.toml +++ b/derive/Cargo.toml @@ -8,7 +8,7 @@ keywords = ["derive", "macros", "scsys"] license = "Apache-2.0" name = "scsys-derive" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [lib] proc-macro = true diff --git a/gen/Cargo.toml b/gen/Cargo.toml index 8b1ea3df..0d15d94d 100644 --- a/gen/Cargo.toml +++ b/gen/Cargo.toml @@ -9,7 +9,7 @@ license = "Apache-2.0" name = "scsys-gen" readme = "README.md" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [features] default = ["wasm"] diff --git a/macros/Cargo.toml b/macros/Cargo.toml index 5bd03561..51a265ad 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -8,7 +8,7 @@ keywords = ["macros", "scsys"] license = "Apache-2.0" name = "scsys-macros" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [lib] crate-type = ["cdylib", "rlib"] diff --git a/scsys/Cargo.toml b/scsys/Cargo.toml index c44099fe..6315ae6f 100644 --- a/scsys/Cargo.toml +++ b/scsys/Cargo.toml @@ -9,7 +9,7 @@ license = "Apache-2.0" name = "scsys" readme = "README.md" repository = "https://github.com/scattered-systems/scsys" -version = "0.1.33" # TODO: Update the package version +version = "0.1.34" # TODO: Update the package version [features] default = [ From 753bd0374792bb7a32ef38b0f65f8aa64cb5cb6f Mon Sep 17 00:00:00 2001 From: Joe McCain III Date: Sun, 27 Nov 2022 14:22:09 +0000 Subject: [PATCH 3/5] Update --- core/src/primitives/appellation.rs | 19 +++++++++++---- core/src/primitives/timestamp.rs | 38 ++++++++++++++++++++++++++---- 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/core/src/primitives/appellation.rs b/core/src/primitives/appellation.rs index 530a81d7..9e8a6ed5 100644 --- a/core/src/primitives/appellation.rs +++ b/core/src/primitives/appellation.rs @@ -7,17 +7,26 @@ */ use serde::{Deserialize, Serialize}; -#[derive(Clone, Debug, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] +#[derive(Clone, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] pub struct Appellation { pub id: T, pub key: T, // Key is meant for use with items like a CID from IPFS pub label: T, } -impl std::fmt::Display for Appellation -where - T: Serialize, -{ +impl Appellation { + pub fn new(id: T, key: T, label: T) -> Self { + Self { id, key, label } + } +} + +impl std::fmt::Debug for Appellation { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", serde_json::to_string_pretty(&self).unwrap()) + } +} + +impl std::fmt::Display for Appellation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { write!(f, "{}", serde_json::to_string(&self).unwrap()) } diff --git a/core/src/primitives/timestamp.rs b/core/src/primitives/timestamp.rs index 1665dd79..8c9f406f 100644 --- a/core/src/primitives/timestamp.rs +++ b/core/src/primitives/timestamp.rs @@ -3,7 +3,7 @@ Contrib: FL03 Description: ... Summary ... */ -use crate::{timestamp, Temporal}; +use crate::{timestamp, DefaultTimezone, Temporal}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] @@ -13,6 +13,12 @@ impl Timestamp { pub fn new() -> Self { Self(timestamp()) } + pub fn now() -> chrono::DateTime { + chrono::Utc::now() + } + pub fn pretty() -> String { + Self::now().to_rfc3339() + } pub fn ts() -> i64 { chrono::Utc::now().timestamp() } @@ -24,6 +30,29 @@ impl Temporal for Timestamp { } } +impl std::convert::TryFrom for Timestamp { + type Error = crate::BoxError; + + fn try_from(data: String) -> Result { + Self::try_from(data.as_str()) + } +} + +impl std::convert::TryFrom<&str> for Timestamp { + type Error = crate::BoxError; + + fn try_from(value: &str) -> Result { + let dt = chrono::DateTime::parse_from_rfc3339(value)?; + Ok(Self(dt.timestamp())) + } +} + +impl std::convert::From<&chrono::DateTime> for Timestamp { + fn from(ts: &chrono::DateTime) -> Self { + Self(ts.timestamp()) + } +} + impl std::convert::From<&Timestamp> for Timestamp { fn from(ts: &Timestamp) -> Self { Self(ts.0) @@ -60,9 +89,10 @@ mod tests { #[test] fn test_timestamp() { - let a = Timestamp::default(); - let b = a.clone(); - b.chrono_to_bson(Timestamp::datetime()); + let ts = Timestamp::now(); + let str_ts = ts.to_rfc3339(); + let a = Timestamp::from(&ts); + let b = Timestamp::try_from(str_ts).unwrap(); assert_eq!(a, b) } From 56fd457372a3cc373f6cde8edfc97decc92341ae Mon Sep 17 00:00:00 2001 From: Joe McCain III Date: Sun, 27 Nov 2022 14:33:46 +0000 Subject: [PATCH 4/5] Update --- crypto/src/hash/mod.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/crypto/src/hash/mod.rs b/crypto/src/hash/mod.rs index d8d7b175..0ace1187 100644 --- a/crypto/src/hash/mod.rs +++ b/crypto/src/hash/mod.rs @@ -19,6 +19,14 @@ pub(crate) mod utils { .to_owned() .into() } + /// Given a collection of elements, reduce into a single hash by updating the same hasher + pub fn iter_hasher(data: &Vec) -> GenericHash { + let mut hasher = blake3::Hasher::default(); + for i in data { + hasher.update(i.to_string().as_bytes()); + } + hasher.finalize().as_bytes().to_owned().into() + } } #[cfg(test)] @@ -41,4 +49,16 @@ mod tests { let b = hasher(&generate_random_string(None)); assert_ne!(&a, &b) } + + #[test] + fn test_iter_hasher() { + let hashes = |i: usize| { + std::ops::Range { start: 0, end: i } + .map(|_| generate_random_string(None)) + .collect::>() + }; + let a = iter_hasher(&hashes(10)); + let b = iter_hasher(&hashes(12)); + assert_ne!(&a, &b) + } } From e03d1a5113ff5ce532fb1213d3c015cf7cbe164e Mon Sep 17 00:00:00 2001 From: Joe McCain III Date: Tue, 29 Nov 2022 02:53:53 +0000 Subject: [PATCH 5/5] Update --- actors/src/contexts/mod.rs | 18 ++++++++- actors/src/contexts/specs/configurable.rs | 13 ------- actors/src/contexts/specs/contextual.rs | 14 ------- actors/src/contexts/specs/mod.rs | 10 ----- actors/src/handlers/{files.rs => handler.rs} | 14 ++----- actors/src/handlers/mod.rs | 12 ++++-- core/Cargo.toml | 4 +- core/src/lib.rs | 3 +- core/src/primitives/mod.rs | 7 +--- core/src/times/mod.rs | 41 ++++++++++++++++++++ core/src/{primitives => times}/timestamp.rs | 1 + core/src/utils/mod.rs | 41 +++++++++++--------- core/src/utils/times.rs | 31 --------------- scripts/publish.sh | 1 + 14 files changed, 101 insertions(+), 109 deletions(-) delete mode 100644 actors/src/contexts/specs/configurable.rs delete mode 100644 actors/src/contexts/specs/contextual.rs delete mode 100644 actors/src/contexts/specs/mod.rs rename actors/src/handlers/{files.rs => handler.rs} (56%) create mode 100644 core/src/times/mod.rs rename core/src/{primitives => times}/timestamp.rs (97%) delete mode 100644 core/src/utils/times.rs diff --git a/actors/src/contexts/mod.rs b/actors/src/contexts/mod.rs index a42dc7f8..0a755103 100644 --- a/actors/src/contexts/mod.rs +++ b/actors/src/contexts/mod.rs @@ -7,4 +7,20 @@ pub use self::{context::*, specs::*}; pub(crate) mod context; -pub(crate) mod specs; + +pub(crate) mod specs { + use serde::Serialize; + + pub trait Configurable: Serialize { + type Settings; + + fn settings(&self) -> &Self::Settings; + } + + pub trait Contextual: ToString { + type Cnf: Configurable; + type Ctx; + + fn context(&self) -> &Self::Ctx; + } +} diff --git a/actors/src/contexts/specs/configurable.rs b/actors/src/contexts/specs/configurable.rs deleted file mode 100644 index 4797aec0..00000000 --- a/actors/src/contexts/specs/configurable.rs +++ /dev/null @@ -1,13 +0,0 @@ -/* - Appellation: configurable - Creator: FL03 - Description: - ... Summary ... -*/ -use serde::Serialize; - -pub trait Configurable: Serialize { - type Settings; - - fn settings(&self) -> &Self::Settings; -} diff --git a/actors/src/contexts/specs/contextual.rs b/actors/src/contexts/specs/contextual.rs deleted file mode 100644 index cded124f..00000000 --- a/actors/src/contexts/specs/contextual.rs +++ /dev/null @@ -1,14 +0,0 @@ -/* - Appellation: contextual - Creator: FL03 - Description: - ... Summary ... -*/ -use super::Configurable; - -pub trait Contextual: ToString { - type Cnf: Configurable; - type Ctx; - - fn context(&self) -> &Self::Ctx; -} diff --git a/actors/src/contexts/specs/mod.rs b/actors/src/contexts/specs/mod.rs deleted file mode 100644 index bbdc19fd..00000000 --- a/actors/src/contexts/specs/mod.rs +++ /dev/null @@ -1,10 +0,0 @@ -/* - Appellation: specs - Creator: FL03 - Description: - ... Summary ... -*/ -pub use self::{configurable::*, contextual::*}; - -pub(crate) mod configurable; -pub(crate) mod contextual; diff --git a/actors/src/handlers/files.rs b/actors/src/handlers/handler.rs similarity index 56% rename from actors/src/handlers/files.rs rename to actors/src/handlers/handler.rs index cdd31133..41db7b45 100644 --- a/actors/src/handlers/files.rs +++ b/actors/src/handlers/handler.rs @@ -7,16 +7,10 @@ use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Default, Deserialize, Eq, Hash, PartialEq, Serialize)] -pub struct FileHandler { - pub path: String, -} +pub struct Handler; -impl FileHandler { - pub fn new(path: String) -> Self { - Self { path } +impl Handler { + pub fn new() -> Self { + Self } } - -pub trait DocumentHandler { - fn path(&self) -> String; -} diff --git a/actors/src/handlers/mod.rs b/actors/src/handlers/mod.rs index f69c2c5f..5af0e30e 100644 --- a/actors/src/handlers/mod.rs +++ b/actors/src/handlers/mod.rs @@ -4,12 +4,16 @@ Description: ... Summary ... */ -pub use self::files::{DocumentHandler, FileHandler}; +pub use self::{handler::*, specs::*, utils::*}; -pub(crate) mod files; +pub(crate) mod handler; -pub trait Handle { - fn state(&self) -> &S; +pub(crate) mod specs { + use crate::states::Stateful; + + pub trait StateHandle { + fn state(&self) -> &S; + } } pub(crate) mod utils {} diff --git a/core/Cargo.toml b/core/Cargo.toml index c8a28364..8a4ab51e 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -20,8 +20,8 @@ chrono = "0.4.22" config = "0.13.2" glob = "0.3.0" nom = "7.1.1" -serde = { features = ["derive"], version = "1.0.147" } -serde_json = "1.0.87" +serde = { features = ["derive"], version = "1.0.148" } +serde_json = "1.0.89" strum = { features = ["derive"], version = "0.24.1" } url = "2.3.1" diff --git a/core/src/lib.rs b/core/src/lib.rs index 76beefe1..053d72dc 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -5,7 +5,7 @@ ... Summary ... */ #[doc(inline)] -pub use self::{data::*, primitives::*, specs::*, utils::*}; +pub use self::{data::*, primitives::*, specs::*, times::*, utils::*}; pub mod accounts; pub mod errors; @@ -19,4 +19,5 @@ pub mod providers; pub(crate) mod data; pub(crate) mod primitives; pub(crate) mod specs; +pub(crate) mod times; pub(crate) mod utils; diff --git a/core/src/primitives/mod.rs b/core/src/primitives/mod.rs index e99f09ea..aedb9a41 100644 --- a/core/src/primitives/mod.rs +++ b/core/src/primitives/mod.rs @@ -1,17 +1,14 @@ /* Appellation: primitives - Creator: FL03 + Contrib: FL03 Description: ... Summary ... */ #[doc(inline)] -pub use self::{ - address::*, appellation::*, constants::*, ids::*, links::*, timestamp::*, types::*, -}; +pub use self::{address::*, appellation::*, constants::*, ids::*, links::*, types::*}; pub(crate) mod address; pub(crate) mod appellation; pub(crate) mod constants; pub(crate) mod ids; pub(crate) mod links; -pub(crate) mod timestamp; pub(crate) mod types; diff --git a/core/src/times/mod.rs b/core/src/times/mod.rs new file mode 100644 index 00000000..2dee857e --- /dev/null +++ b/core/src/times/mod.rs @@ -0,0 +1,41 @@ +/* + Appellation: times + Contrib: FL03 + Description: ... Summary ... +*/ +pub use self::{timestamp::*, utils::*}; + +pub(crate) mod timestamp; + +pub(crate) mod utils { + use chrono::{DateTime, TimeZone, Utc}; + + pub fn chrono_datetime_now() -> DateTime { + Utc::now() + } + + pub fn ts_rfc3339() -> String { + Utc::now().to_rfc3339() + } + + pub fn chrono_into_bson(data: DateTime) -> bson::DateTime { + bson::DateTime::from_chrono(data) + } + + pub fn timestamp() -> i64 { + Utc::now().timestamp() + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_timestamp() { + let boundary = Timestamp::now(); + let a = Timestamp::from(&boundary); + let b = Timestamp::try_from(boundary.to_rfc3339()).ok().unwrap(); + assert_eq!(&a, &b); + } +} diff --git a/core/src/primitives/timestamp.rs b/core/src/times/timestamp.rs similarity index 97% rename from core/src/primitives/timestamp.rs rename to core/src/times/timestamp.rs index 8c9f406f..76302c2b 100644 --- a/core/src/primitives/timestamp.rs +++ b/core/src/times/timestamp.rs @@ -6,6 +6,7 @@ use crate::{timestamp, DefaultTimezone, Temporal}; use serde::{Deserialize, Serialize}; +/// Timestamp implements a host of useful utilities for stamping data #[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)] pub struct Timestamp(pub i64); diff --git a/core/src/utils/mod.rs b/core/src/utils/mod.rs index 0d9b0c7b..dc834427 100644 --- a/core/src/utils/mod.rs +++ b/core/src/utils/mod.rs @@ -3,8 +3,7 @@ Contrib: FL03 Description: ... Summary ... */ -pub use self::times::*; -use crate::{ConfigFile, ConfigFileVec}; +use crate::{BoxResult, ConfigFile, ConfigFileVec}; use glob::glob; use std::{ fs::File, @@ -13,6 +12,15 @@ use std::{ string::ToString, }; +/// A generic function wrapper extending glob::glob +pub fn collect_files_as(f: &dyn Fn(std::path::PathBuf) -> T, pat: &str) -> BoxResult> { + let mut files = Vec::::new(); + for r in glob::glob(pat)? { + files.push(f(r?)) + } + Ok(files) +} + // Gather configuration files following the specified pattern and collect them into a vector pub fn collect_config_files(pattern: &str, required: bool) -> ConfigFileVec { glob(pattern) @@ -21,6 +29,17 @@ pub fn collect_config_files(pattern: &str, required: bool) -> ConfigFileVec { .collect::>() } +/// Attempts to collect configuration files, following the given pattern, into a ConfigFileVec +pub fn try_collect_config_files(pattern: &str, required: bool) -> BoxResult { + let f = |p: std::path::PathBuf| ConfigFile::from(p).required(required); + collect_files_as(&f, pattern) + // let mut files = Vec::new(); + // for r in glob::glob(pattern)? { + // files.push(ConfigFile::from(r?).required(required)) + // } + // Ok(files) +} + /// This function converts the file found at path (fp) into a Vec pub fn file_to_vec(fp: String) -> io::Result> { let file_in = File::open(fp)?; @@ -32,22 +51,6 @@ pub fn is_float(data: &T) -> bool { f64::from_str(&data.to_string()).is_ok() } -pub(crate) mod times { - use chrono::{DateTime, TimeZone, Utc}; - - pub fn chrono_datetime_now() -> DateTime { - Utc::now() - } - - pub fn chrono_into_bson(data: DateTime) -> bson::DateTime { - bson::DateTime::from_chrono(data) - } - - pub fn timestamp() -> i64 { - Utc::now().timestamp() - } -} - #[cfg(test)] mod tests { use super::*; @@ -56,7 +59,9 @@ mod tests { fn test_file_to_vec() { let fp = "README.md".to_string(); let a = file_to_vec(fp); + let b = try_collect_config_files("**/Cargo.*", false); assert!(a.is_ok()); + assert!(b.is_ok()); assert!(!a.expect("").is_empty()) } diff --git a/core/src/utils/times.rs b/core/src/utils/times.rs deleted file mode 100644 index e5e29334..00000000 --- a/core/src/utils/times.rs +++ /dev/null @@ -1,31 +0,0 @@ -/* - Appellation: utils - Contrib: FL03 - Description: ... Summary ... -*/ -use chrono::{DateTime, TimeZone, Utc}; - -pub fn chrono_datetime_now() -> DateTime { - Utc::now() -} - -pub fn chrono_into_bson(data: DateTime) -> bson::DateTime { - bson::DateTime::from_chrono(data) -} - -pub fn timestamp() -> i64 { - Utc::now().timestamp() -} - - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_timestamp() { - let a = chrono_datetime_now(); - let b = chrono_into_bson(a); - assert_ne!(&a, &b) - } -} diff --git a/scripts/publish.sh b/scripts/publish.sh index 20f68b30..42effb12 100644 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -1,4 +1,5 @@ #!/bin/bash +cargo publish --all-features --jobs 1 --verbose -p scsys-actors cargo publish --all-features --jobs 1 --verbose -p scsys-core cargo publish --all-features --jobs 1 --verbose -p scsys-crypto cargo publish --all-features --jobs 1 --verbose -p scsys-derive