feat: add basic structure

This commit is contained in:
Kasper Juul Hermansen 2023-02-20 22:06:21 +01:00
parent 5fbae8abd6
commit 50e4d5a879
Signed by: kjuulh
GPG Key ID: 57B6E1465221F912
11 changed files with 56 additions and 36 deletions

9
Cargo.lock generated
View File

@ -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"

View File

@ -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"

View File

@ -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]

View File

View File

@ -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 }

View File

@ -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<C>(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(())
}
}

View File

@ -0,0 +1,7 @@
pub struct Context {}
impl Default for Context {
fn default() -> Self {
Self {}
}
}

View File

@ -0,0 +1,9 @@
pub struct Plugin {}
impl crate::Plugin for Plugin {}
impl Default for Plugin {
fn default() -> Self {
Self {}
}
}

View File

@ -0,0 +1,2 @@
pub mod dagger;
pub mod k8s;

View File

@ -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" }

View File

@ -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();
}