diff --git a/btrbk b/btrbk index 7c23b57..65bbc99 100755 --- a/btrbk +++ b/btrbk @@ -4634,6 +4634,7 @@ sub schedule(@) my $result_hints = $args{result_hints} // {}; my $result_preserve_action_text = $args{result_preserve_action_text}; my $result_delete_action_text = $args{result_delete_action_text} // 'delete'; + my $depends_fn = $args{depends}; my $preserve_day_of_week = $preserve->{dow} || die; my $preserve_hour_of_day = $preserve->{hod} // die; @@ -4782,6 +4783,17 @@ sub schedule(@) } } + if($depends_fn) { + # for all preserved, check depends against all non-preserved + foreach my $href (grep $_->{preserve}, @sorted_schedule) { + my ($dtxt, $deps) = $depends_fn->($href, grep(!$_->{preserve}, @sorted_schedule)); + foreach my $dep (@$deps) { + DEBUG "Preserving dependent: $dep->{value}{PRINT} <- $href->{value}{PRINT}"; + $dep->{preserve} = "preserve forced: $dtxt"; + } + } + } + # assemble results my @delete; my @preserve;