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/$_" )
|
system( 'rm', '-rf', "$local_archive_dir/$_" )
|
||||||
for @selected_experiments;
|
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 {
|
'99. Drop Databases (Mars)' => sub {
|
||||||
|
|||||||
Reference in New Issue
Block a user