add basic output

This commit is contained in:
Kasper Juul Hermansen 2023-02-12 21:00:52 +01:00
parent 12507188ca
commit af0464e45e
Signed by: kjuulh
GPG Key ID: 57B6E1465221F912
7 changed files with 73 additions and 13 deletions

View File

@ -28,7 +28,7 @@ impl Generator for RustGenerator {
visit_scalar: Arc::new({ visit_scalar: Arc::new({
let render = render.clone(); let render = render.clone();
move |t| { move |t| {
let rendered_scalar = render_scalar()?; let rendered_scalar = render_scalar(t)?;
let mut render = render.lock().unwrap(); let mut render = render.lock().unwrap();
@ -42,7 +42,7 @@ impl Generator for RustGenerator {
let render = render.clone(); let render = render.clone();
move |t| { move |t| {
let rendered_scalar = render_object()?; let rendered_scalar = render_object(t)?;
let mut render = render.lock().unwrap(); let mut render = render.lock().unwrap();
@ -56,7 +56,7 @@ impl Generator for RustGenerator {
let render = render.clone(); let render = render.clone();
move |t| { move |t| {
let rendered_scalar = render_input()?; let rendered_scalar = render_input(t)?;
let mut render = render.lock().unwrap(); let mut render = render.lock().unwrap();
@ -70,7 +70,7 @@ impl Generator for RustGenerator {
let render = render.clone(); let render = render.clone();
move |t| { move |t| {
let rendered_scalar = render_enum()?; let rendered_scalar = render_enum(t)?;
let mut render = render.lock().unwrap(); let mut render = render.lock().unwrap();

View File

@ -1,6 +1,33 @@
use dagger_core::introspection::FullType;
use genco::prelude::rust; use genco::prelude::rust;
use genco::quote; use genco::quote;
pub fn render_enum() -> eyre::Result<rust::Tokens> { fn render_enum_values(values: &FullType) -> Option<rust::Tokens> {
Ok(quote! {}) let values = values
.enum_values
.as_ref()
.into_iter()
.map(|values| {
values
.into_iter()
.map(|val| quote! { $(val.name.as_ref()) })
})
.flatten()
.collect::<Vec<_>>();
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<rust::Tokens> {
Ok(quote! {
pub enum $(t.name.as_ref()) {
$(render_enum_values(t))
}
})
} }

View File

@ -1,6 +1,13 @@
use dagger_core::introspection::FullType;
use genco::prelude::rust; use genco::prelude::rust;
use genco::quote; use genco::quote;
pub fn render_input() -> eyre::Result<rust::Tokens> { use crate::rust::functions::format_name;
Ok(quote! {})
pub fn render_input(t: &FullType) -> eyre::Result<rust::Tokens> {
Ok(quote! {
pub struct $(format_name(t.name.as_ref().unwrap())) {
}
})
} }

View File

@ -1,6 +1,12 @@
use dagger_core::introspection::FullType;
use genco::prelude::rust; use genco::prelude::rust;
use genco::quote; use genco::quote;
pub fn render_object() -> eyre::Result<rust::Tokens> { use crate::rust::functions::format_name;
Ok(quote! {})
pub fn render_object(t: &FullType) -> eyre::Result<rust::Tokens> {
Ok(quote! {
pub struct $(format_name(t.name.as_ref().unwrap())) {
}
})
} }

View File

@ -1,6 +1,11 @@
use dagger_core::introspection::FullType;
use genco::prelude::rust; use genco::prelude::rust;
use genco::quote; use genco::quote;
pub fn render_scalar() -> eyre::Result<rust::Tokens> { use crate::rust::functions::format_name;
Ok(quote! {})
pub fn render_scalar(t: &FullType) -> eyre::Result<rust::Tokens> {
Ok(quote! {
pub struct $(format_name(&t.name.as_ref().unwrap()))(String);
})
} }

View File

@ -72,12 +72,21 @@ impl Visitor {
.filter(|t| match t.full_type.kind.as_ref().unwrap() == &item.kind { .filter(|t| match t.full_type.kind.as_ref().unwrap() == &item.kind {
true => match (item.ignore.as_ref(), t.full_type.name.as_ref()) { true => match (item.ignore.as_ref(), t.full_type.name.as_ref()) {
(Some(ignore), Some(name)) => { (Some(ignore), Some(name)) => {
if name.starts_with("__") {
return false;
}
if ignore.contains(name) { if ignore.contains(name) {
return false; return false;
} }
return true; return true;
} }
(None, Some(name)) => {
if name.starts_with("__") {
return false;
}
return true;
}
_ => false, _ => false,
}, },
false => false, false => false,

View File

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