Skip to content

Commit dd9f641

Browse files
authored
refactor: use quote library (#12)
* Convert to quote * Convert struct generation to use quote * fix: serialization * Automated pre-commit update * Prune deps * remove file
1 parent 5040c87 commit dd9f641

File tree

14 files changed

+246
-298
lines changed

14 files changed

+246
-298
lines changed

Cargo.lock

Lines changed: 3 additions & 63 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "codegen-sdk-core"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[dependencies]
77
clap = { version = "4.5.28", features = ["derive"] }
@@ -28,7 +28,6 @@ members = [
2828
rayon = "1.10.0"
2929
env_logger = "0.11.6"
3030
log = "0.4.25"
31-
ouroboros = "0.18.5"
3231
tree-sitter = "0.25.1"
3332
tree-sitter-python = "0.23.6"
3433
tree-sitter-typescript = "0.23.2"

codegen-sdk-analyzer/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "codegen-sdk-analyzer"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[dependencies]
77
salsa = "0.16.1"

codegen-sdk-ast/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "codegen-sdk-ast"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[dependencies]
77
codegen-sdk-cst = { path = "../codegen-sdk-cst" }

codegen-sdk-common/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
[package]
22
name = "codegen-sdk-common"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[dependencies]
77
bytes = { workspace = true }
88
tree-sitter = { workspace = true }
9-
ouroboros = { workspace = true }
109
tree-sitter-python = { workspace = true, optional = true }
1110
tree-sitter-typescript = { workspace = true, optional = true }
1211
tree-sitter-javascript = { workspace = true, optional = true }
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
[package]
22
name = "codegen-sdk-cst-generator"
33
version = "0.1.0"
4-
edition = "2021"
4+
edition = "2024"
55

66
[dependencies]
77
convert_case = { workspace = true }
88
prettyplease = "0.2.29"
9-
syn = "2.0.98"
9+
syn = { version = "2.0.98", features = ["proc-macro"] }
1010
tree-sitter = { workspace = true }
1111
log = { workspace = true }
1212
codegen-sdk-common = { path = "../codegen-sdk-common" }
1313
anyhow = { workspace = true }
14-
14+
quote = "1.0.38"
15+
proc-macro2 = "1.0.93"
16+
tempfile = "3.8.1"
1517
[dev-dependencies]
1618
codegen-sdk-common = { path = "../codegen-sdk-common" , features = ["python"] }

codegen-sdk-cst-generator/src/generator.rs

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,23 @@ mod enum_generator;
88
mod format;
99
mod state;
1010
mod struct_generator;
11-
const IMPORTS: &str = "
12-
use std::sync::Arc;
13-
use tree_sitter;
14-
use derive_more::Debug;
15-
use codegen_sdk_common::*;
16-
use std::backtrace::Backtrace;
17-
use bytes::Bytes;
18-
use rkyv::{Archive, Deserialize, Serialize, Portable};
19-
";
11+
use std::io::Write;
2012

13+
use proc_macro2::TokenStream;
14+
use quote::quote;
15+
fn get_imports() -> TokenStream {
16+
quote! {
17+
18+
use std::sync::Arc;
19+
use tree_sitter;
20+
use derive_more::Debug;
21+
use codegen_sdk_common::*;
22+
use std::backtrace::Backtrace;
23+
use bytes::Bytes;
24+
use rkyv::{Archive, Deserialize, Serialize, Portable};
25+
26+
}
27+
}
2128
pub(crate) fn generate_cst(node_types: &Vec<Node>) -> anyhow::Result<String> {
2229
let mut state = State::default();
2330
let mut nodes = HashSet::new();
@@ -47,15 +54,21 @@ pub(crate) fn generate_cst(node_types: &Vec<Node>) -> anyhow::Result<String> {
4754
generate_struct(node, &mut state, &name);
4855
}
4956
}
50-
let mut result = IMPORTS.to_string();
51-
result.push_str(&state.enums);
52-
result.push_str(&state.structs);
53-
let formatted = format::format_cst(&result);
57+
let mut result = get_imports();
58+
result.extend_one(state.enums);
59+
result.extend_one(state.structs);
60+
let formatted = format::format_cst(&result.to_string());
5461
match formatted {
5562
Ok(formatted) => return Ok(formatted),
5663
Err(e) => {
57-
log::error!("Failed to format CST: {}", e);
58-
return Ok(result.to_string());
64+
let mut out_file = tempfile::NamedTempFile::with_suffix(".rs")?;
65+
log::error!(
66+
"Failed to format CST, writing to temp file at {}",
67+
out_file.path().display()
68+
);
69+
out_file.write_all(result.to_string().as_bytes())?;
70+
out_file.keep()?;
71+
return Err(e);
5972
}
6073
}
6174
}

0 commit comments

Comments
 (0)