assemble-macros 0.2.0

Macros for assemble. shouldn't be used by itself. Instead use assemble-core
Documentation
use assemble_core::__export::Serializable;
use assemble_core::file_collection::FileSet;
use assemble_core::lazy_evaluation::{Prop, Provider};

use assemble_core::task::initialize_task::InitializeTask;
use assemble_core::task::task_io::TaskIO;
use assemble_core::task::up_to_date::UpToDate;
use assemble_core::task::work_handler::output::Output;
use assemble_core::{BuildResult, Executable, Project, Task};
use assemble_macros::TaskIO;
use std::collections::HashMap;
use std::path::PathBuf;

#[test]
fn can_reuse_basic_output() {
    #[derive(Debug, Default, TaskIO)]
    struct CountLines {
        #[input(file)]
        path: Prop<PathBuf>,
        #[output]
        lines: Prop<usize>,
    }

    impl UpToDate for CountLines {}
    impl InitializeTask for CountLines {}

    impl Task for CountLines {
        fn task_action(_task: &mut Executable<Self>, _project: &Project) -> BuildResult {
            todo!()
        }
    }

    let mut mapping = HashMap::new();
    mapping.insert("lines".to_string(), Serializable::new(15).unwrap());

    let output = &Output::new(FileSet::new(), mapping);

    let mut count_lines = CountLines::default();
    count_lines.recover_outputs(output);

    assert_eq!(
        count_lines.lines.get(),
        15,
        "Should be set to 15 after output recovered"
    );
}