Lift shared dependencies into `[workspace.dependencies]`
Hoist the eleven crates used by two or more workspace members
(`fs-err`, `jiff`, `miette`, `mlua`, `petgraph`, `regex`, `serde`,
`serde_json`, `tempfile`, `thiserror`, `tracing`) so version and
default features live in one place. Members declare `dep = { workspace
= true }` and add per-crate `features` extensions where they need them
(e.g. `miette` gets `fancy` in `quire-ci`/`quire-server` but not
`quire-core`; `fs-err` gets `tokio` in the server).

Single-crate deps (`askama`, `axum`, `clap`, `rusqlite`, `sentry`,
`serde_yaml_ng`, `tower`, …) stay local to the crate that owns them.

Assisted-by: Claude Opus 4.7 (1M context) via Claude Code
change lmlsunwopysssqurrntrwkwxroxqlrlr
commit 4d703dcaa2512df2438619bac47c3f20133aecc9
author Alpha Chen <alpha@kejadlen.dev>
date
parent zknokwum
diff --git a/Cargo.toml b/Cargo.toml
index 685007f..d35d962 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,3 +1,16 @@
 [workspace]
 members = ["quire-ci", "quire-core", "quire-server"]
 resolver = "3"
+
+[workspace.dependencies]
+fs-err = "*"
+jiff = { version = "*", features = ["serde"] }
+miette = "*"
+mlua = { version = "*", features = ["lua54", "serde", "vendored", "error-send"] }
+petgraph = "*"
+regex = "*"
+serde = { version = "*", features = ["derive"] }
+serde_json = "*"
+tempfile = "*"
+thiserror = "*"
+tracing = "*"
diff --git a/quire-ci/Cargo.toml b/quire-ci/Cargo.toml
index e28c06d..0b1e2a8 100644
--- a/quire-ci/Cargo.toml
+++ b/quire-ci/Cargo.toml
@@ -4,6 +4,6 @@ version = "0.1.0"
 edition = "2024"
 
 [dependencies]
-fs-err = "*"
-miette = { version = "*", features = ["fancy"] }
+fs-err = { workspace = true }
+miette = { workspace = true, features = ["fancy"] }
 quire-core = { path = "../quire-core" }
diff --git a/quire-core/Cargo.toml b/quire-core/Cargo.toml
index 8c50272..aa9d6ea 100644
--- a/quire-core/Cargo.toml
+++ b/quire-core/Cargo.toml
@@ -4,16 +4,16 @@ version = "0.1.0"
 edition = "2024"
 
 [dependencies]
-fs-err = "*"
-jiff = { version = "*", features = ["serde"] }
-miette = "*"
-mlua = { version = "*", features = ["lua54", "serde", "vendored", "error-send"] }
-petgraph = "*"
-regex = "*"
-serde = { version = "*", features = ["derive"] }
-thiserror = "*"
-tracing = "*"
+fs-err = { workspace = true }
+jiff = { workspace = true }
+miette = { workspace = true }
+mlua = { workspace = true }
+petgraph = { workspace = true }
+regex = { workspace = true }
+serde = { workspace = true }
+thiserror = { workspace = true }
+tracing = { workspace = true }
 
 [dev-dependencies]
-serde_json = "*"
-tempfile = "*"
+serde_json = { workspace = true }
+tempfile = { workspace = true }
diff --git a/quire-server/Cargo.toml b/quire-server/Cargo.toml
index 810aafd..50ad291 100644
--- a/quire-server/Cargo.toml
+++ b/quire-server/Cargo.toml
@@ -18,28 +18,29 @@ path = "src/bin/quire/main.rs"
 [dependencies]
 quire-core = { path = "../quire-core" }
 
+fs-err = { workspace = true, features = ["tokio"] }
+jiff = { workspace = true }
+miette = { workspace = true, features = ["fancy"] }
+mlua = { workspace = true }
+petgraph = { workspace = true }
+regex = { workspace = true }
+serde = { workspace = true }
+serde_json = { workspace = true }
+tempfile = { workspace = true }
+thiserror = { workspace = true }
+tracing = { workspace = true }
+
 askama = "*"
 axum = "*"
 clap = { version = "*", features = ["derive", "env"] }
 clap_complete = "*"
-fs-err = { version = "*", features = ["tokio"] }
-jiff = { version = "*", features = ["serde"] }
-miette = { version = "*", features = ["fancy"] }
-mlua = { version = "*", features = ["lua54", "serde", "vendored", "error-send"] }
-regex = "*"
-petgraph = "*"
 rusqlite = { version = "*", features = ["bundled"] }
 rusqlite_migration = "*"
 sentry = { version = "*", features = ["backtrace", "contexts", "debug-images", "panic", "release-health", "reqwest", "rustls", "tokio"], default-features = false }
 sentry-tracing = "*"
-serde = { version = "*", features = ["derive"] }
-serde_json = "*"
 serde_yaml_ng = "*"
 shell-words = "*"
-tempfile = "*"
-thiserror = "*"
 tokio = { version = "*", features = ["full"] }
-tracing = "*"
 tracing-subscriber = { version = "*", features = ["env-filter", "json"] }
 uuid = { version = "*", features = ["v7"] }
 walkdir = "*"
@@ -49,5 +50,4 @@ assert_cmd = "*"
 hegeltest = "*"
 http-body-util = "*"
 predicates = "*"
-serde_json = "*"
 tower = { version = "*", features = ["util"] }