workspace: scaffold Cargo workspace with rpn-core and rpn-cli
First code in the repo. Workspace root is Application/ per readme; members are src/core (crate rpn-core) and src/cli (binary rpnc). Crate names are prefixed to avoid clashing with the std `core` crate; directory names follow the readme layout. Dependencies (versions pinned in Cargo.lock): - core: sqlx (mysql, runtime-tokio, chrono, rust_decimal), chrono, csv, thiserror, serde/serde_json, tracing, plus sha2 (SHA-256 file checksums required by schema.sql), rust_decimal (exact DECIMAL(10,2) money, forced by the "money is DECIMAL everywhere" decision), tokio and tempfile as dev deps. - cli: clap (derive), tokio, tracing-subscriber (env-filter), anyhow, serde/serde_json, chrono, csv. The extra crates beyond the readme stack (sha2, rust_decimal, tracing-subscriber, tempfile-dev) are direct consequences of already-committed decisions; flag for maintainer review. No feature logic yet: rpnc is an empty shell, the domain modules land in the TDD slices that follow.
This commit is contained in:
Generated
+2443
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
|||||||
|
[workspace]
|
||||||
|
resolver = "3"
|
||||||
|
members = ["src/core", "src/cli"]
|
||||||
|
|
||||||
|
[workspace.package]
|
||||||
|
edition = "2024"
|
||||||
|
rust-version = "1.85"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[package]
|
||||||
|
name = "rpn-cli"
|
||||||
|
version = "0.1.0"
|
||||||
|
publish = false
|
||||||
|
edition.workspace = true
|
||||||
|
rust-version.workspace = true
|
||||||
|
|
||||||
|
[[bin]]
|
||||||
|
name = "rpnc"
|
||||||
|
path = "src/main.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0.104"
|
||||||
|
chrono = "0.4.45"
|
||||||
|
clap = { version = "4.6.6", features = ["derive"] }
|
||||||
|
csv = "1.4.0"
|
||||||
|
rpn-core = { path = "../core" }
|
||||||
|
serde = { version = "1.0.229", features = ["derive"] }
|
||||||
|
serde_json = "1.0.151"
|
||||||
|
tokio = { version = "1.53.1", features = ["macros", "rt-multi-thread"] }
|
||||||
|
tracing-subscriber = { version = "0.3.23", features = ["env-filter"] }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
fn main() {}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
[package]
|
||||||
|
name = "rpn-core"
|
||||||
|
version = "0.1.0"
|
||||||
|
publish = false
|
||||||
|
edition.workspace = true
|
||||||
|
rust-version.workspace = true
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
chrono = "0.4.45"
|
||||||
|
csv = "1.4.0"
|
||||||
|
rust_decimal = "1.43.0"
|
||||||
|
serde = { version = "1.0.229", features = ["derive"] }
|
||||||
|
serde_json = "1.0.151"
|
||||||
|
sha2 = "0.11.0"
|
||||||
|
sqlx = { version = "0.8.6", features = ["mysql", "runtime-tokio", "chrono", "rust_decimal"] }
|
||||||
|
thiserror = "2.0.20"
|
||||||
|
tracing = "0.1.44"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
tempfile = "3.27.0"
|
||||||
|
tokio = { version = "1.53.1", features = ["macros", "rt-multi-thread"] }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
//! Domain logic for RustyRPN: ingest, invoices, Fortnox, car registry.
|
||||||
Reference in New Issue
Block a user