Delete related files when deleting archived experiments from menu
This commit is contained in:
@@ -1129,6 +1129,44 @@ my %handlers = (
|
||||
|
||||
system( 'rm', '-rf', "$local_archive_dir/$_" )
|
||||
for @selected_experiments;
|
||||
|
||||
# Find related query and chart files by experiment prefix
|
||||
my $belongs_to_experiment = sub {
|
||||
my ($file) = @_;
|
||||
return grep { $file =~ /^\Q$_\E_/ } @selected_experiments;
|
||||
};
|
||||
|
||||
my @groups;
|
||||
for my $group (
|
||||
[ 'Queries', $local_queries_dir ],
|
||||
[ 'Charts', $local_charts_out_dir ],
|
||||
) {
|
||||
my ( $label, $dir ) = @$group;
|
||||
next unless -d $dir;
|
||||
|
||||
my @files =
|
||||
grep { $belongs_to_experiment->($_) } Util::find_files($dir);
|
||||
push @groups,
|
||||
{
|
||||
label => sprintf( '%s (%d files)', $label, scalar @files ),
|
||||
dir => $dir,
|
||||
files => \@files,
|
||||
}
|
||||
if @files;
|
||||
}
|
||||
|
||||
# Ask which related files to delete as well
|
||||
if (@groups) {
|
||||
my @selected_labels =
|
||||
TUI::select_from_list( "Also delete related files?", 1,
|
||||
map { $_->{label} } @groups );
|
||||
|
||||
foreach my $group (@groups) {
|
||||
next unless grep { $_ eq $group->{label} } @selected_labels;
|
||||
system( 'rm', '-f', "$group->{dir}/$_" )
|
||||
for @{ $group->{files} };
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
'99. Drop Databases (Mars)' => sub {
|
||||
|
||||
Reference in New Issue
Block a user