From dc493ef3e525b428d1fc477039352f158719236f Mon Sep 17 00:00:00 2001 From: Kinflou Date: Mon, 31 Aug 2026 07:35:47 +0800 Subject: [PATCH] feat: get codegen from comline-codelib-gen, not comline-core Code generation moved to ComlineProject/generation (de-rot G1b). The CLI is the composition root: it compiles schemas via comline-core and picks a generator via comline-codelib-gen. - Cargo.toml: add comline-codelib-gen (generation git rev f17c210); move comline-core from crates.io 0.1.0 to the same core git rev (d8bc708) comline-codelib-gen uses, so the tree has one comline-core. - generate.rs / clean.rs: comline_core::codelib_gen::find_generator -> comline_codelib_gen::code_gen::find_generator. Behaviour note: generation's find_generator is version-exact (only "1.70.0" is registered) where core's ignored the version. All fixtures and `comline new` scaffolding use rust#1.70.0, so no test changes. cargo test: 36 passed. --- Cargo.lock | 14 ++++++++++++-- Cargo.toml | 5 ++++- src/commands/clean.rs | 2 +- src/commands/generate.rs | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e8b8c8..1cc6985 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -369,6 +369,7 @@ dependencies = [ "clap", "clap_complete", "clap_mangen", + "comline-codelib-gen", "comline-core", "indicatif", "libc", @@ -383,11 +384,20 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "comline-codelib-gen" +version = "0.1.0" +source = "git+https://github.com/ComlineProject/generation?rev=f17c2109934a94c595925a45db4938c0720d41ed#f17c2109934a94c595925a45db4938c0720d41ed" +dependencies = [ + "comline-core", + "eyre", + "once_cell", +] + [[package]] name = "comline-core" version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60374964b3a1d27961d461cd0cc6ef14ccc5604ecad9bd77c550bac5073edf8a" +source = "git+https://github.com/ComlineProject/core?rev=d8bc708bf23e4accd06a13da1d317b10596888c7#d8bc708bf23e4accd06a13da1d317b10596888c7" dependencies = [ "ariadne", "bincode", diff --git a/Cargo.toml b/Cargo.toml index 22b832f..e84a111 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,10 @@ tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter", "fmt"] } serde = { version = "1", features = ["derive"] } toml = "0.8" -comline-core = "0.1" +# git rev (not crates.io 0.1.0) so this and `comline-codelib-gen` share one +# `comline-core` in the tree. Local dev: see .cargo/config. +comline-core = { git = "https://github.com/ComlineProject/core", rev = "d8bc708bf23e4accd06a13da1d317b10596888c7" } +comline-codelib-gen = { git = "https://github.com/ComlineProject/generation", rev = "f17c2109934a94c595925a45db4938c0720d41ed" } [target.'cfg(unix)'.dependencies] libc = "0.2" diff --git a/src/commands/clean.rs b/src/commands/clean.rs index f99c340..c9ad99b 100644 --- a/src/commands/clean.rs +++ b/src/commands/clean.rs @@ -103,7 +103,7 @@ pub(crate) fn generated_files(work_dir: &Path) -> Vec { // covers the single-version (`latest`) case; a multi-version tree lives // under a dedicated `out` dir and is removed by the branch above. let Some((_, ext)) = - comline_core::codelib_gen::find_generator(&t.language, &t.lang_version) + comline_codelib_gen::code_gen::find_generator(&t.language, &t.lang_version) else { continue; }; diff --git a/src/commands/generate.rs b/src/commands/generate.rs index 25e8854..05ce90b 100644 --- a/src/commands/generate.rs +++ b/src/commands/generate.rs @@ -98,7 +98,7 @@ fn generate_once(work_dir: &Path, overrides: &Overrides) -> Result<()> { } let Some((generator, ext)) = - comline_core::codelib_gen::find_generator(&t.language, &t.lang_version) + comline_codelib_gen::code_gen::find_generator(&t.language, &t.lang_version) else { return Err(miette!( "no generator for `{}` (version `{}`)",