From 0bf6b0e91ecc31c1f6b51338234137eb185810a0 Mon Sep 17 00:00:00 2001 From: kjuulh Date: Sun, 29 Jan 2023 15:23:03 +0100 Subject: [PATCH] with codegen output --- crates/dagger-codegen/src/codegen.rs | 4 +--- crates/dagger-codegen/src/handlers/scalar.rs | 2 +- crates/dagger-sdk/src/gen.rs | 23 ++++++++++++++++++++ crates/dagger-sdk/src/lib.rs | 2 ++ src/cli_generate.rs | 5 ++++- 5 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 crates/dagger-sdk/src/gen.rs diff --git a/crates/dagger-codegen/src/codegen.rs b/crates/dagger-codegen/src/codegen.rs index e75eebe..9793628 100644 --- a/crates/dagger-codegen/src/codegen.rs +++ b/crates/dagger-codegen/src/codegen.rs @@ -1,10 +1,9 @@ use std::sync::Arc; -use genco::{prelude::rust, quote, quote_in}; +use genco::{prelude::rust, quote}; use graphql_introspection_query::introspection_response::{ FullType, IntrospectionResponse, Schema, }; -use itertools::Itertools; use crate::{ handlers::{scalar::Scalar, DynHandler, Handlers}, @@ -47,7 +46,6 @@ impl CodeGeneration { for t in types { if let Some(_) = self.type_name(&t) { let rendered = handler.render(&t)?; - output.push(); output.append(rendered); } diff --git a/crates/dagger-codegen/src/handlers/scalar.rs b/crates/dagger-codegen/src/handlers/scalar.rs index b3f0df9..bfd2e7d 100644 --- a/crates/dagger-codegen/src/handlers/scalar.rs +++ b/crates/dagger-codegen/src/handlers/scalar.rs @@ -30,7 +30,7 @@ impl Handler for Scalar { let name = t.name.as_ref().ok_or(eyre::anyhow!("name not found"))?; Ok(quote! { - pub struct $name (Scalar); + pub struct $name(Scalar); }) } diff --git a/crates/dagger-sdk/src/gen.rs b/crates/dagger-sdk/src/gen.rs new file mode 100644 index 0000000..8dc6272 --- /dev/null +++ b/crates/dagger-sdk/src/gen.rs @@ -0,0 +1,23 @@ +// code generated by dagger. DO NOT EDIT. + +/// A content-addressed socket identifier. +pub struct SocketID(Scalar); + +/// The platform config OS and architecture in a Container. +/// The format is [os]/[platform]/[version] (e.g. darwin/arm64/v7, windows/amd64, linux/arm64). +pub struct Platform(Scalar); + +/// A unique container identifier. Null designates an empty container (scratch). +pub struct ContainerID(Scalar); + +/// A content-addressed directory identifier. +pub struct DirectoryID(Scalar); + +/// A unique identifier for a secret. +pub struct SecretID(Scalar); + +/// A file identifier. +pub struct FileID(Scalar); + +/// A global cache volume identifier. +pub struct CacheID(Scalar); \ No newline at end of file diff --git a/crates/dagger-sdk/src/lib.rs b/crates/dagger-sdk/src/lib.rs index 7d12d9a..daf205e 100644 --- a/crates/dagger-sdk/src/lib.rs +++ b/crates/dagger-sdk/src/lib.rs @@ -1,3 +1,5 @@ +pub mod gen; + pub fn add(left: usize, right: usize) -> usize { left + right } diff --git a/src/cli_generate.rs b/src/cli_generate.rs index 14696ce..7f4957d 100644 --- a/src/cli_generate.rs +++ b/src/cli_generate.rs @@ -1,3 +1,5 @@ +use std::io::Write; + use clap::{Arg, ArgMatches}; use dagger_codegen::codegen::CodeGeneration; @@ -21,7 +23,8 @@ impl GenerateCommand { let code = CodeGeneration::new().generate(&schema)?; if let Some(output) = arg_matches.get_one::("output") { - // TODO: Write to file + let mut file = std::fs::File::create(output)?; + file.write(code.as_bytes())?; } else { println!("{}", code); }