rebos 1.5.2

NixOS-like reproducibility for any Linux distro.
#![allow(dead_code)]

pub mod macros {
    macro_rules! build_package_manager {
        (
            $built_field_name: expr,
            $curr_field_name: expr,
            $package_manager: ident,
            $summary_entries: ident
        ) => {
            let diffs = history(&$built_field_name, &$curr_field_name);

            let mut to_install: Vec<String> = Vec::new();
            let mut to_remove: Vec<String> = Vec::new();

            for i in diffs.iter() {
                match i.mode {
                    HistoryMode::Add => to_install.push(i.line.to_string()),
                    HistoryMode::Remove => to_remove.push(i.line.to_string()),
                };
            }

            match $package_manager::install(&to_install) {
                Ok(_o) => {},
                Err(e) => return Err(e),
            };

            match $package_manager::uninstall(&to_remove) {
                Ok(_o) => {},
                Err(e) => return Err(e),
            };

            $summary_entries.push(&diffs);
        };
    }

    macro_rules! build_package_manager_first_time {
        (
            $package_manager: ident,
            $curr_field_name: expr
        ) => {
            match $package_manager::install(&$curr_field_name) {
                Ok(_o) => {},
                Err(e) => return Err(e),
            };
        };
    }

    pub(crate) use build_package_manager;
    pub(crate) use build_package_manager_first_time;
}