feat(derive): Add derive macro for interface

This commit is contained in:
2023-02-21 22:40:42 +01:00
parent 50e4d5a879
commit 0ca86560bf
9 changed files with 124 additions and 11 deletions

View File

@@ -7,3 +7,7 @@ edition = "2021"
[dependencies]
char_sdk = { path = "../../../crates/char_sdk" }
char_sdk_derive = { path = "../../../crates/char_sdk_derive" }
eyre = { workspace = true }
tokio = { workspace = true }

View File

@@ -1,14 +1,42 @@
struct Run;
impl char_sdk::Action for Run {}
use char_sdk_derive::CharAction;
#[derive(CharAction)]
struct Run;
impl char_sdk::Action for Run {
fn action<'a>(&self) -> char_sdk::ActionArgs<'a> {
char_sdk::ActionArgs {
name: "run",
args: vec![char_sdk::ActionArg::Required {
name: "profile",
description: "which release profile to use, takes ['release', 'test']",
}],
}
}
fn execute(&self, args: &[&char_sdk::InputArg]) -> eyre::Result<()> {
todo!()
}
}
#[derive(CharAction)]
struct Build;
impl char_sdk::Action for Build {}
impl char_sdk::Action for Build {
fn action<'a>(&self) -> char_sdk::ActionArgs<'a> {
todo!()
}
fn execute(&self, args: &[&char_sdk::InputArg]) -> eyre::Result<()> {
todo!()
}
}
fn main() {
char_sdk::CharBuilder::new()
.add_context(char_sdk::std::dagger::Context::default())
.add_action(Run {})
.add_action(Build {})
.add_plugin(char_sdk::std::dagger::Plugin::default())
.add_plugin(char_sdk::std::k8s::Plugin::default())
.execute()
.unwrap();