1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use super::*;

/// Clean build artifacts.
#[derive(Clone, Debug, Parser)]
#[clap(name = "clean")]
pub struct Clean {}

impl Clean {
    pub fn clean(self, bin: Option<PathBuf>) -> Result<()> {
        let crate_config = dioxus_cli_config::CrateConfig::new(bin)?;

        let output = Command::new("cargo")
            .arg("clean")
            .stdout(Stdio::piped())
            .stderr(Stdio::piped())
            .output()?;

        if !output.status.success() {
            return custom_error!("Cargo clean failed.");
        }

        let out_dir = &crate_config.out_dir();
        if out_dir.is_dir() {
            remove_dir_all(out_dir)?;
        }

        let fullstack_out_dir = crate_config.fullstack_out_dir();

        if fullstack_out_dir.is_dir() {
            remove_dir_all(fullstack_out_dir)?;
        }

        Ok(())
    }
}