diff --git a/datman/src/commands/backup.rs b/datman/src/commands/backup.rs index 04eca0e..a7e71ec 100644 --- a/datman/src/commands/backup.rs +++ b/datman/src/commands/backup.rs @@ -17,7 +17,7 @@ along with Yama. If not, see . use crate::descriptor::{Descriptor, DestPileDescriptor, SourceDescriptor, VirtualSourceKind}; use crate::labelling::{label_node, load_labelling_rules, str_to_label, Label, State}; -use crate::tree::{scan, FileTree}; +use crate::tree::{scan, FileTree, FileTree1}; use anyhow::anyhow; use arc_interner::ArcIntern; use chrono::{DateTime, Utc}; @@ -63,6 +63,65 @@ pub fn open_stdout_backup_process( Ok(child) } +pub fn label_filter_and_convert( + tree: FileTree1<()>, + descriptor: &Descriptor, + desc_path: &Path, + source_name: &str, + dest: &DestPileDescriptor, +) -> anyhow::Result> { + info!("Labelling."); + let mut tree = tree.replace_meta(&None); + let labels = descriptor + .labels + .iter() + .map(|l| Label(ArcIntern::new(l.clone()))) + .collect(); + let rules = load_labelling_rules(desc_path, source_name)?; + label_node("".to_owned(), None, &mut tree, &labels, &rules)?; + + let included_labels: HashSet