turbo
68f728ef - chore: Extract run/cache.rs to turborepo-run-cache crate (#11348)

Commit
30 days ago
chore: Extract run/cache.rs to turborepo-run-cache crate (#11348) ## Summary - Create new `turborepo-run-cache` crate with task-aware cache logic - Move `TaskDefinitionExt` and `TaskOutputsExt` traits to `turborepo-types` - Delete `crates/turborepo-lib/src/run/cache.rs` ## Details This continues the turborepo-lib modularization effort, extracting reusable cache logic to a focused crate. ### New crate: `turborepo-run-cache` Contains: - `RunCache` - Wraps `AsyncCache` with task-aware semantics (log files, output globs, daemon integration) - `TaskCache` - Per-task cache state and operations (restore, save, replay logs) - `ConfigCache` - Cache for configuration files - `CacheOutput` trait - Interface for outputting cache status to users - `RunCacheOpts` - Options for cache behavior ### Moved to `turborepo-types` Extension traits that operate on types already in turborepo-types: - `TaskDefinitionExt` - `workspace_relative_log_file()`, `repo_relative_hashable_outputs()` - `TaskOutputsExt` - `validated_inclusions()`, `validated_exclusions()`, `is_empty()` ### Why this extraction? The cache logic is **reusable domain logic**, not orchestration: 1. It wraps `AsyncCache` with task-aware semantics 2. It's used by the visitor during task execution 3. It could be reused by other tooling (cache inspection, testing utilities) 4. It doesn't depend on CLI args or the `Run` struct This moves turborepo-lib closer to being a thin orchestration layer. ## Testing - `cargo check -p turborepo-types` ✅ - `cargo check -p turborepo-run-cache` ✅ - `cargo check -p turborepo-lib` ✅ - `cargo test -p turborepo-lib --lib` ✅ (313 tests)
Author
Parents
Loading