Skip to content

Commit 8ff52ba

Browse files
authored
Add logging (#5)
* Clean up deps and add logs * Refactor and add env logger * Refactor * reformat
1 parent 43128db commit 8ff52ba

File tree

10 files changed

+107
-55
lines changed

10 files changed

+107
-55
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ clap = { version = "4.5.28", features = ["derive"] }
88
codegen-sdk-analyzer = { path = "codegen-sdk-analyzer" }
99
codegen-sdk-cst = { path = "codegen-sdk-cst" }
1010
crossbeam = "0.8.4"
11+
env_logger = "0.11.6"
1112
glob = "0.3.2"
12-
phf = { version = "0.11.3", features = ["macros"] }
13+
log = { workspace = true }
1314
rayon = "1.10.0"
1415
sysinfo = "0.33.1"
1516
[workspace]
@@ -21,4 +22,12 @@ members = [
2122
"codegen-sdk-cst-generator",
2223
]
2324
[workspace.dependencies]
25+
log = "0.4.25"
2426
ouroboros = "0.18.5"
27+
tree-sitter = "0.25.1"
28+
tree-sitter-python = "0.23.6"
29+
tree-sitter-typescript = "0.23.2"
30+
bytes = "1.10.0"
31+
convert_case = "0.7.1"
32+
serde = { version = "1.0.217", features = ["derive"] }
33+
serde_json = "1.0.138"

codegen-sdk-analyzer/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ edition = "2021"
66
[dependencies]
77
salsa = "0.16.1"
88
codegen-sdk-ast = { path = "../codegen-sdk-ast" }
9-
convert_case = "0.7.1"

codegen-sdk-common/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
bytes = "1.10.0"
8-
tree-sitter = "0.25.1"
9-
ouroboros = "0.18.5"
7+
bytes = { workspace = true }
8+
tree-sitter = { workspace = true }
9+
ouroboros = { workspace = true }

codegen-sdk-cst-generator/Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
convert_case = "0.7.1"
7+
convert_case = { workspace = true }
88
phf = { version = "0.11.3", features = ["macros"] }
99
prettyplease = "0.2.29"
10-
serde = { version = "1.0.217", features = ["derive"] }
11-
serde_json = "1.0.138"
10+
serde = { workspace = true, features = ["derive"] }
11+
serde_json = { workspace = true }
1212
syn = "2.0.98"
13-
tree-sitter = "0.25.1"
13+
tree-sitter = { workspace = true }
14+
log = { workspace = true }
1415
codegen-sdk-common = { path = "../codegen-sdk-common" }
1516
[dev-dependencies]
16-
serde_json = "1.0.138"
17-
tree-sitter-python = "0.23.6"
17+
tree-sitter-python = { workspace = true }

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,6 @@ mod tests {
6161
fn test_generate_cst() {
6262
let node_types = parse_node_types(tree_sitter_python::NODE_TYPES).unwrap();
6363
let cst = generate_cst(&node_types).unwrap();
64-
println!("{}", cst);
64+
log::info!("{}", cst);
6565
}
6666
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pub fn format_cst(cst: &str) -> String {
22
let parsed = syn::parse_str::<syn::File>(cst)
33
.map_err(|e| {
4-
println!("{:#?}", e);
4+
log::error!("{:#?}", e);
55
e
66
})
77
.unwrap();

codegen-sdk-cst/Cargo.toml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ version = "0.1.0"
44
edition = "2021"
55

66
[dependencies]
7-
tree-sitter = "0.25.1"
8-
tree-sitter-python = "0.23.6"
9-
ouroboros = "0.18.5"
10-
tree-sitter-typescript = "0.23.2"
11-
bytes = "1.10.0"
7+
tree-sitter = { workspace = true }
8+
tree-sitter-python = { workspace = true }
9+
ouroboros = { workspace = true }
10+
tree-sitter-typescript = { workspace = true }
11+
bytes = { workspace = true }
1212
codegen-sdk-common = { path = "../codegen-sdk-common" }
13+
convert_case = { workspace = true }
1314
[build-dependencies]
1415
codegen-sdk-cst-generator = { path = "../codegen-sdk-cst-generator" }
1516
codegen-sdk-common = { path = "../codegen-sdk-common" }
16-
tree-sitter-python = "0.23.6"
17-
tree-sitter-typescript = "0.23.2"
17+
tree-sitter-python = { workspace = true }
18+
tree-sitter-typescript = { workspace = true }
1819

1920
[dev-dependencies]
2021
tempfile = "3.16.0"

renovate.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
{
2-
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
3-
"extends": [
4-
"config:recommended"
5-
]
2+
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
3+
"extends": ["config:recommended"]
64
}

src/main.rs

Lines changed: 43 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,47 +8,61 @@ use sysinfo::System;
88
struct Args {
99
input: String,
1010
}
11-
fn main() {
11+
fn get_memory() -> u64 {
12+
let s = System::new_all();
13+
let current = s.process(sysinfo::get_current_pid().unwrap()).unwrap();
14+
current.memory()
15+
}
16+
fn collect_files(dir: String) -> Vec<path::PathBuf> {
17+
glob(&format!("{}/**/*.ts*", dir))
18+
.unwrap()
19+
.filter_map(|file| file.ok())
20+
.collect()
21+
}
22+
fn parse_file(
23+
file: &path::PathBuf,
24+
tx: &crossbeam::channel::Sender<String>,
25+
) -> Option<Box<tsx::Program>> {
26+
if file.is_dir() {
27+
return None;
28+
}
29+
return match parse_file_typescript(file.to_str().unwrap()) {
30+
Ok(program) => Some(program),
31+
Err(e) => {
32+
tx.send(e.to_string()).unwrap();
33+
None
34+
}
35+
};
36+
}
37+
fn parse_files(dir: String) -> (Vec<Box<tsx::Program>>, Vec<String>) {
1238
rayon::ThreadPoolBuilder::new()
1339
.stack_size(1024 * 1024 * 1024 * 10)
1440
.build_global()
1541
.unwrap();
16-
let args = Args::parse();
17-
let dir = args.input;
18-
let mut errors = Vec::new();
1942
let (tx, rx) = crossbeam::channel::unbounded();
20-
let start = Instant::now();
21-
let files_to_parse: Vec<Result<path::PathBuf, glob::GlobError>> =
22-
glob(&format!("{}/**/*.ts*", dir)).unwrap().collect();
23-
43+
let mut errors = Vec::new();
44+
let files_to_parse = collect_files(dir);
45+
log::info!("Parsing {} files", files_to_parse.len());
2446
let files: Vec<Box<tsx::Program>> = files_to_parse
2547
.par_iter()
26-
.filter_map(|file| {
27-
if let Ok(file) = file {
28-
if file.is_dir() {
29-
return None;
30-
}
31-
return match parse_file_typescript(file.to_str().unwrap()) {
32-
Ok(program) => Some(program),
33-
Err(e) => {
34-
tx.send(e.to_string()).unwrap();
35-
None
36-
}
37-
};
38-
}
39-
None
40-
})
48+
.filter_map(|file| parse_file(file, &tx))
4149
.collect();
42-
let end = Instant::now();
43-
let duration: std::time::Duration = end.duration_since(start);
4450
drop(tx);
4551
for e in rx.iter() {
4652
errors.push(e);
4753
}
48-
let s = System::new_all();
49-
let current = s.process(sysinfo::get_current_pid().unwrap()).unwrap();
50-
let memory = current.memory();
51-
println!(
54+
(files, errors)
55+
}
56+
fn main() {
57+
env_logger::init();
58+
let args = Args::parse();
59+
let dir = args.input;
60+
let start = Instant::now();
61+
let (files, errors) = parse_files(dir);
62+
let end = Instant::now();
63+
let duration: std::time::Duration = end.duration_since(start);
64+
let memory = get_memory();
65+
log::info!(
5266
"{} files parsed in {:?}.{} seconds with {} errors. Using {} MB of memory",
5367
files.len(),
5468
duration.as_secs(),

0 commit comments

Comments
 (0)