From 50e4d5a879e346f47e7f6d150d738b8cacbd5f0a Mon Sep 17 00:00:00 2001 From: kjuulh Date: Mon, 20 Feb 2023 22:06:21 +0100 Subject: [PATCH] feat: add basic structure --- Cargo.lock | 9 +++---- Cargo.toml | 7 +----- crates/char/Cargo.toml | 8 ------ crates/char/src/lib.rs | 0 crates/char_sdk/Cargo.toml | 1 + crates/char_sdk/src/lib.rs | 34 ++++++++++++++++++-------- crates/char_sdk/src/std/dagger/mod.rs | 7 ++++++ crates/char_sdk/src/std/k8s/mod.rs | 9 +++++++ crates/char_sdk/src/std/mod.rs | 2 ++ examples/service/char_plan/Cargo.toml | 2 +- examples/service/char_plan/src/main.rs | 13 +++++----- 11 files changed, 56 insertions(+), 36 deletions(-) delete mode 100644 crates/char/Cargo.toml delete mode 100644 crates/char/src/lib.rs create mode 100644 crates/char_sdk/src/std/dagger/mod.rs create mode 100644 crates/char_sdk/src/std/k8s/mod.rs create mode 100644 crates/char_sdk/src/std/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 9e6b90a..24d9c5b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,10 +62,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "char" -version = "0.1.0" - [[package]] name = "char_cli" version = "0.1.0" @@ -82,12 +78,15 @@ dependencies = [ name = "char_plan" version = "0.1.0" dependencies = [ - "char", + "char_sdk", ] [[package]] name = "char_sdk" version = "0.1.0" +dependencies = [ + "eyre", +] [[package]] name = "clap" diff --git a/Cargo.toml b/Cargo.toml index aa4080d..ed0cf3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,10 +1,5 @@ [workspace] -members = [ - "examples/service/char_plan", - "crates/char_cli", - "crates/char_sdk", - "crates/char", -] +members = ["examples/service/char_plan", "crates/char_cli", "crates/char_sdk"] [workspace.dependencies] eyre = "0.6.8" diff --git a/crates/char/Cargo.toml b/crates/char/Cargo.toml deleted file mode 100644 index dbd975c..0000000 --- a/crates/char/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "char" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/crates/char/src/lib.rs b/crates/char/src/lib.rs deleted file mode 100644 index e69de29..0000000 diff --git a/crates/char_sdk/Cargo.toml b/crates/char_sdk/Cargo.toml index 6440b16..c9b6bf7 100644 --- a/crates/char_sdk/Cargo.toml +++ b/crates/char_sdk/Cargo.toml @@ -6,3 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +eyre = { workspace = true } diff --git a/crates/char_sdk/src/lib.rs b/crates/char_sdk/src/lib.rs index 7d12d9a..c7ab31d 100644 --- a/crates/char_sdk/src/lib.rs +++ b/crates/char_sdk/src/lib.rs @@ -1,14 +1,28 @@ -pub fn add(left: usize, right: usize) -> usize { - left + right -} +pub mod std; -#[cfg(test)] -mod tests { - use super::*; +pub trait Action {} +pub trait Plugin {} - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); +pub struct CharBuilder; + +impl CharBuilder { + pub fn new() -> Self { + CharBuilder + } + + pub fn add_context(mut self, context: C) -> Self { + self + } + + pub fn add_action(mut self, action: impl Action) -> Self { + self + } + + pub fn add_plugin(mut self, plugin: impl Plugin) -> Self { + self + } + + pub fn execute(mut self) -> eyre::Result<()> { + Ok(()) } } diff --git a/crates/char_sdk/src/std/dagger/mod.rs b/crates/char_sdk/src/std/dagger/mod.rs new file mode 100644 index 0000000..aab3ce9 --- /dev/null +++ b/crates/char_sdk/src/std/dagger/mod.rs @@ -0,0 +1,7 @@ +pub struct Context {} + +impl Default for Context { + fn default() -> Self { + Self {} + } +} diff --git a/crates/char_sdk/src/std/k8s/mod.rs b/crates/char_sdk/src/std/k8s/mod.rs new file mode 100644 index 0000000..fccba49 --- /dev/null +++ b/crates/char_sdk/src/std/k8s/mod.rs @@ -0,0 +1,9 @@ +pub struct Plugin {} + +impl crate::Plugin for Plugin {} + +impl Default for Plugin { + fn default() -> Self { + Self {} + } +} diff --git a/crates/char_sdk/src/std/mod.rs b/crates/char_sdk/src/std/mod.rs new file mode 100644 index 0000000..021486c --- /dev/null +++ b/crates/char_sdk/src/std/mod.rs @@ -0,0 +1,2 @@ +pub mod dagger; +pub mod k8s; diff --git a/examples/service/char_plan/Cargo.toml b/examples/service/char_plan/Cargo.toml index 1a99055..b98dd55 100644 --- a/examples/service/char_plan/Cargo.toml +++ b/examples/service/char_plan/Cargo.toml @@ -6,4 +6,4 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -char = { path = "../../../crates/char" } +char_sdk = { path = "../../../crates/char_sdk" } diff --git a/examples/service/char_plan/src/main.rs b/examples/service/char_plan/src/main.rs index d72f146..f661674 100644 --- a/examples/service/char_plan/src/main.rs +++ b/examples/service/char_plan/src/main.rs @@ -1,14 +1,15 @@ struct Run; -impl char::Action for Run {} +impl char_sdk::Action for Run {} struct Build; -impl char::Action for Build {} +impl char_sdk::Action for Build {} fn main() { - char::new() - .add_context(char::dagger::Context::default()) + char_sdk::CharBuilder::new() + .add_context(char_sdk::std::dagger::Context::default()) .add_action(Run {}) .add_action(Build {}) - .add_plugin(char::std::k8s::Context::default()) - .execute(); + .add_plugin(char_sdk::std::k8s::Plugin::default()) + .execute() + .unwrap(); }