- Add normalize_to_final_build() to map tune configs to final builds (323/233/332) - Add normalized_config field to BestCarRecord - Change CarCounts.by_rid key from String to (String, String) for per-config tracking - Change CarCounts.guid_to_rid to HashMap<String, HashSet<(String, String)>> - Extract owned tune configs from my_cars.json (engineMajor/weightMajor/chassisMajor) - Add improve command: owned cars not yet at final build, sorted by track count - Strip version prefixes (v2c_/v1c_) from config keys at parse time - Update dedup check in update_best_car to consider normalized_config - Add atomic_write helper for safe CSV output - Delete completed plans/code-review-v2.md - Apply rustfmt formatting across codebase
27 lines
923 B
Rust
27 lines
923 B
Rust
//! Track command implementation.
|
|
//!
|
|
//! Shows the best car for a specific track/condition/RQ combination.
|
|
|
|
use top_drives::AppError;
|
|
|
|
use crate::commands::{load_my_cars_or_warn, run_analysis};
|
|
use crate::output::print_best_car;
|
|
|
|
/// Executes the track command: shows best car for a specific track/condition/RQ.
|
|
///
|
|
/// Note: `_output_dir` is unused because the track command prints to stdout
|
|
/// rather than writing a CSV file. It exists for API consistency with other
|
|
/// command signatures so the caller doesn't need per-command branching.
|
|
pub async fn run_track(
|
|
my_cars_path: &str,
|
|
cars_db_path: &str,
|
|
times_dir: &str,
|
|
_output_dir: &str,
|
|
track: &str,
|
|
condition: &str,
|
|
rq: u8,
|
|
) -> Result<(), AppError> {
|
|
let my_data = load_my_cars_or_warn(my_cars_path)?;
|
|
let (ctx, _counts) = run_analysis(&my_data, cars_db_path, times_dir).await?;
|
|
print_best_car(&ctx, track, condition, rq)
|
|
}
|