fn release()

in xtask/src/main.rs [49:126]


fn release() -> Result<(), DynError> {
    let cargo = env::var("CARGO").unwrap_or_else(|_| "cargo".to_string());

    let status = Command::new(&cargo)
        .current_dir(project_root())
        .args(["release", "--workspace", "minor", "-x", "--no-publish"])
        .status()?;

    if !status.success() {
        Err("cargo release failed")?;
    }

    // For packaged build: rename libcubeb Cargo.toml files to Cargo.toml.in.
    visit_dirs(Path::new("cubeb-sys/libcubeb"), &|entry| {
        let path = entry.path();
        if path
            .file_name()
            .unwrap()
            .to_str()
            .unwrap()
            .ends_with("Cargo.toml")
        {
            let new_path = path.with_file_name("Cargo.toml.in");
            fs::rename(&path, &new_path).unwrap();
        }
    })
    .unwrap();

    let status = Command::new(&cargo)
        .current_dir(project_root())
        .args(["publish", "--package", "cubeb-sys", "--allow-dirty"])
        .status()?;
    if !status.success() {
        Err("cargo publish failed")?;
    }

    // Rename libcubeb Cargo.toml.in files back to Cargo.toml.
    visit_dirs(Path::new("cubeb-sys/libcubeb"), &|entry| {
        let path = entry.path();
        if path
            .file_name()
            .unwrap()
            .to_str()
            .unwrap()
            .ends_with("Cargo.toml.in")
        {
            let new_path = path.with_file_name("Cargo.toml");
            fs::rename(&path, &new_path).unwrap();
        }
    })
    .unwrap();

    let status = Command::new(&cargo)
        .current_dir(project_root())
        .args(["publish", "--package", "cubeb-core"])
        .status()?;
    if !status.success() {
        Err("cargo publish failed")?;
    }

    let status = Command::new(&cargo)
        .current_dir(project_root())
        .args(["publish", "--package", "cubeb-backend"])
        .status()?;
    if !status.success() {
        Err("cargo publish failed")?;
    }

    let status = Command::new(&cargo)
        .current_dir(project_root())
        .args(["publish", "--package", "cubeb"])
        .status()?;
    if !status.success() {
        Err("cargo publish failed")?;
    }

    Ok(())
}