assemble-core 0.2.0

The core crate of the assemble-rs package
Documentation
use assemble_core::defaults::tasks::Empty;
use assemble_core::task::{ExecutableTask, HasTaskId, ResolveExecutable, ResolveInnerTask};
use assemble_core::Project;

#[test]
fn lazy_evaluation() {
    let project = Project::temp(None);
    println!("project: {}", project);

    let mut clean = project.tasks().register_task::<Empty>("clean").unwrap();
    clean
        .configure_with(|clean, _| {
            println!("Running first configuration action");
            clean.do_first(|task, _| {
                println!("FIRST: executing task: {}", task.task_id());
                Ok(())
            })
        })
        .unwrap();
    println!("added first configuration action");
    clean.resolve_task(&project).unwrap();
    clean
        .configure_with(|clean, _| {
            println!("Running second configuration action");
            clean.do_last(|task, _| {
                println!("LAST: executing task: {}", task.task_id());
                Ok(())
            })
        })
        .unwrap();

    let mut executable = clean.get_executable(&project).unwrap();
    project.with(|project| executable.execute(project)).unwrap();
}