Skip to main content

cargo_mate/cmd/
optimize.rs

1use anyhow::Result;
2use crate::captain::optimize;
3use crate::cmd::smune::OptimizeAction;
4pub fn handle_optimize(action: OptimizeAction) -> Result<()> {
5    let optimizer = optimize::BuildOptimizer::new(None)?;
6    match action {
7        OptimizeAction::Aggressive => {
8            optimizer.optimize_build(optimize::OptimizationProfile::Aggressive)?;
9        }
10        OptimizeAction::Balanced => {
11            optimizer.optimize_build(optimize::OptimizationProfile::Balanced)?;
12        }
13        OptimizeAction::Conservative => {
14            optimizer.optimize_build(optimize::OptimizationProfile::Conservative)?;
15        }
16        OptimizeAction::Custom {
17            jobs,
18            incremental,
19            opt_level,
20            debug_level,
21            codegen_units,
22        } => {
23            let incremental_bool = incremental.to_lowercase() == "true";
24            let profile = optimize::OptimizationProfile::Custom {
25                jobs,
26                incremental: incremental_bool,
27                opt_level,
28                debug_level,
29                codegen_units,
30            };
31            optimizer.optimize_build(profile)?;
32        }
33        OptimizeAction::Status => {
34            optimizer.show_status()?;
35        }
36        OptimizeAction::Recommendations => {
37            optimizer.show_recommendations()?;
38        }
39        OptimizeAction::Restore => {
40            optimizer.restore_backup()?;
41        }
42    }
43    Ok(())
44}