assemble_rust/cargo/
build.rs

1//! Build a rust project
2
3use crate::cargo::Target;
4use crate::extensions::RustPluginExtension;
5use crate::prelude::*;
6use crate::toolchain::Toolchain;
7use assemble_core::lazy_evaluation::{Prop, VecProp};
8use assemble_core::plugins::extensions::ExtensionAware;
9use assemble_core::project::error::ProjectResult;
10use assemble_core::task::initialize_task::InitializeTask;
11use assemble_core::task::up_to_date::UpToDate;
12
13/// A task to build rust projects
14#[derive(Debug, CreateTask, TaskIO)]
15pub struct CargoFmt {
16    /// The toolchain of the cargo build
17    pub toolchain: Prop<Toolchain>,
18    /// The targets to use while building
19    pub targets: VecProp<Target>,
20}
21
22impl InitializeTask for CargoFmt {
23    fn initialize(task: &mut Executable<Self>, project: &Project) -> ProjectResult {
24        let ext = project.extension::<RustPluginExtension>().unwrap();
25        task.toolchain.set_with(ext.toolchain.clone())?;
26        Ok(())
27    }
28}
29
30impl UpToDate for CargoFmt {}
31
32impl Task for CargoFmt {
33    fn task_action(_task: &mut Executable<Self>, _project: &Project) -> BuildResult {
34        todo!()
35    }
36}