diff --git a/crates/dagger-codegen/src/rust/mod.rs b/crates/dagger-codegen/src/rust/mod.rs index 6910fa0..5e52c1b 100644 --- a/crates/dagger-codegen/src/rust/mod.rs +++ b/crates/dagger-codegen/src/rust/mod.rs @@ -28,7 +28,7 @@ impl Generator for RustGenerator { visit_scalar: Arc::new({ let render = render.clone(); move |t| { - let rendered_scalar = render_scalar()?; + let rendered_scalar = render_scalar(t)?; let mut render = render.lock().unwrap(); @@ -42,7 +42,7 @@ impl Generator for RustGenerator { let render = render.clone(); move |t| { - let rendered_scalar = render_object()?; + let rendered_scalar = render_object(t)?; let mut render = render.lock().unwrap(); @@ -56,7 +56,7 @@ impl Generator for RustGenerator { let render = render.clone(); move |t| { - let rendered_scalar = render_input()?; + let rendered_scalar = render_input(t)?; let mut render = render.lock().unwrap(); @@ -70,7 +70,7 @@ impl Generator for RustGenerator { let render = render.clone(); move |t| { - let rendered_scalar = render_enum()?; + let rendered_scalar = render_enum(t)?; let mut render = render.lock().unwrap(); diff --git a/crates/dagger-codegen/src/rust/templates/enum_tmpl.rs b/crates/dagger-codegen/src/rust/templates/enum_tmpl.rs index bd22bbf..860584d 100644 --- a/crates/dagger-codegen/src/rust/templates/enum_tmpl.rs +++ b/crates/dagger-codegen/src/rust/templates/enum_tmpl.rs @@ -1,6 +1,33 @@ +use dagger_core::introspection::FullType; use genco::prelude::rust; use genco::quote; -pub fn render_enum() -> eyre::Result { - Ok(quote! {}) +fn render_enum_values(values: &FullType) -> Option { + let values = values + .enum_values + .as_ref() + .into_iter() + .map(|values| { + values + .into_iter() + .map(|val| quote! { $(val.name.as_ref()) }) + }) + .flatten() + .collect::>(); + + let mut tokens = rust::Tokens::new(); + for val in values { + tokens.append(val); + tokens.push(); + } + + Some(tokens) +} + +pub fn render_enum(t: &FullType) -> eyre::Result { + Ok(quote! { + pub enum $(t.name.as_ref()) { + $(render_enum_values(t)) + } + }) } diff --git a/crates/dagger-codegen/src/rust/templates/input_tmpl.rs b/crates/dagger-codegen/src/rust/templates/input_tmpl.rs index 10add34..1e029f1 100644 --- a/crates/dagger-codegen/src/rust/templates/input_tmpl.rs +++ b/crates/dagger-codegen/src/rust/templates/input_tmpl.rs @@ -1,6 +1,13 @@ +use dagger_core::introspection::FullType; use genco::prelude::rust; use genco::quote; -pub fn render_input() -> eyre::Result { - Ok(quote! {}) +use crate::rust::functions::format_name; + +pub fn render_input(t: &FullType) -> eyre::Result { + Ok(quote! { + pub struct $(format_name(t.name.as_ref().unwrap())) { + + } + }) } diff --git a/crates/dagger-codegen/src/rust/templates/object_tmpl.rs b/crates/dagger-codegen/src/rust/templates/object_tmpl.rs index 842fe08..6a82058 100644 --- a/crates/dagger-codegen/src/rust/templates/object_tmpl.rs +++ b/crates/dagger-codegen/src/rust/templates/object_tmpl.rs @@ -1,6 +1,12 @@ +use dagger_core::introspection::FullType; use genco::prelude::rust; use genco::quote; -pub fn render_object() -> eyre::Result { - Ok(quote! {}) +use crate::rust::functions::format_name; + +pub fn render_object(t: &FullType) -> eyre::Result { + Ok(quote! { + pub struct $(format_name(t.name.as_ref().unwrap())) { + } + }) } diff --git a/crates/dagger-codegen/src/rust/templates/scalar_tmpl.rs b/crates/dagger-codegen/src/rust/templates/scalar_tmpl.rs index daebe58..0b0cdcc 100644 --- a/crates/dagger-codegen/src/rust/templates/scalar_tmpl.rs +++ b/crates/dagger-codegen/src/rust/templates/scalar_tmpl.rs @@ -1,6 +1,11 @@ +use dagger_core::introspection::FullType; use genco::prelude::rust; use genco::quote; -pub fn render_scalar() -> eyre::Result { - Ok(quote! {}) +use crate::rust::functions::format_name; + +pub fn render_scalar(t: &FullType) -> eyre::Result { + Ok(quote! { + pub struct $(format_name(&t.name.as_ref().unwrap()))(String); + }) } diff --git a/crates/dagger-codegen/src/visitor.rs b/crates/dagger-codegen/src/visitor.rs index b7d967b..4bd6924 100644 --- a/crates/dagger-codegen/src/visitor.rs +++ b/crates/dagger-codegen/src/visitor.rs @@ -72,12 +72,21 @@ impl Visitor { .filter(|t| match t.full_type.kind.as_ref().unwrap() == &item.kind { true => match (item.ignore.as_ref(), t.full_type.name.as_ref()) { (Some(ignore), Some(name)) => { + if name.starts_with("__") { + return false; + } if ignore.contains(name) { return false; } return true; } + (None, Some(name)) => { + if name.starts_with("__") { + return false; + } + return true; + } _ => false, }, false => false, diff --git a/crates/dagger-sdk/src/gen.rs b/crates/dagger-sdk/src/gen.rs index 8b13789..5a7a8f4 100644 --- a/crates/dagger-sdk/src/gen.rs +++ b/crates/dagger-sdk/src/gen.rs @@ -1 +1,7 @@ - +pub struct CacheId(String); +pub struct ContainerId(String); +pub struct DirectoryId(String); +pub struct FileId(String); +pub struct Platform(String); +pub struct SecretId(String); +pub struct SocketId(String);