refactor(io): scaffold empty improvise-io sub-crate
Lay groundwork for Phase 3 of the workspace split (improvise-8zh): a new `crates/improvise-io/` sub-crate that will house the persistence and import layers once the files move in the next commit. Only scaffolding here: - New `crates/improvise-io/Cargo.toml` declares deps on improvise-core, improvise-formula, and the external crates persistence+import already use: anyhow, chrono, csv, flate2, indexmap, pest, pest_derive, serde, serde_json. Dev-deps: pest_meta, proptest, tempfile. - New `crates/improvise-io/src/lib.rs` re-exports the core modules under their conventional names (`format`, `model`, `view`, `workbook`, `formula`) so in the next commit the moved code's `crate::model::*`, `crate::view::*`, `crate::workbook::*`, `crate::format::*`, and `crate::formula::*` paths resolve unchanged. - Root `Cargo.toml` adds the new crate to workspace members and the main crate's `[dependencies]`, ready to receive the move. No source files change yet; cargo check --workspace still compiles as before. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
21
Cargo.lock
generated
21
Cargo.lock
generated
@ -739,6 +739,7 @@ dependencies = [
|
||||
"flate2",
|
||||
"improvise-core",
|
||||
"improvise-formula",
|
||||
"improvise-io",
|
||||
"indexmap",
|
||||
"pest",
|
||||
"pest_derive",
|
||||
@ -775,6 +776,26 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "improvise-io"
|
||||
version = "0.1.0-rc2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
"csv",
|
||||
"flate2",
|
||||
"improvise-core",
|
||||
"improvise-formula",
|
||||
"indexmap",
|
||||
"pest",
|
||||
"pest_derive",
|
||||
"pest_meta",
|
||||
"proptest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.14.0"
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
[workspace]
|
||||
members = [".", "crates/improvise-formula", "crates/improvise-core"]
|
||||
members = [".", "crates/improvise-formula", "crates/improvise-core", "crates/improvise-io"]
|
||||
|
||||
[package]
|
||||
name = "improvise"
|
||||
@ -20,6 +20,7 @@ path = "src/main.rs"
|
||||
[dependencies]
|
||||
improvise-core = { path = "crates/improvise-core" }
|
||||
improvise-formula = { path = "crates/improvise-formula" }
|
||||
improvise-io = { path = "crates/improvise-io" }
|
||||
ratatui = "0.30"
|
||||
crossterm = "0.29"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
|
||||
25
crates/improvise-io/Cargo.toml
Normal file
25
crates/improvise-io/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
||||
[package]
|
||||
name = "improvise-io"
|
||||
version = "0.1.0-rc2"
|
||||
edition = "2024"
|
||||
description = "Persistence and import for improvise (.improv format, CSV, JSON wizard)"
|
||||
license = "Apache-2.0"
|
||||
repository = "https://github.com/fiddlerwoaroof/improvise"
|
||||
|
||||
[dependencies]
|
||||
improvise-core = { path = "../improvise-core" }
|
||||
improvise-formula = { path = "../improvise-formula" }
|
||||
anyhow = "1"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
csv = "1"
|
||||
flate2 = "1"
|
||||
indexmap = { version = "2", features = ["serde"] }
|
||||
pest = "2.8.6"
|
||||
pest_derive = "2.8.6"
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
|
||||
[dev-dependencies]
|
||||
pest_meta = "2.8.6"
|
||||
proptest = "1"
|
||||
tempfile = "3"
|
||||
15
crates/improvise-io/src/lib.rs
Normal file
15
crates/improvise-io/src/lib.rs
Normal file
@ -0,0 +1,15 @@
|
||||
//! I/O layer for `improvise`: `.improv` persistence (parse/format, save/load,
|
||||
//! CSV export) and import (CSV/JSON wizard, field analyzer).
|
||||
//!
|
||||
//! Depends on `improvise-core` for the data model (`Model`, `View`,
|
||||
//! `Workbook`, `CellKey`, `CellValue`, `GridLayout`, `Axis`, `Group`) and on
|
||||
//! `improvise-formula` for formula parsing. Has no awareness of UI or
|
||||
//! commands — builds standalone via `cargo build -p improvise-io`.
|
||||
//!
|
||||
//! Re-exports the core modules under their conventional names so code in
|
||||
//! this crate can keep using `crate::model::*`, `crate::view::*`,
|
||||
//! `crate::workbook::*`, `crate::format::*`, and `crate::formula::*` paths.
|
||||
//!
|
||||
//! Scaffolded empty in this commit; the modules land in the next commit.
|
||||
pub use improvise_core::{format, model, view, workbook};
|
||||
pub use improvise_formula as formula;
|
||||
Reference in New Issue
Block a user