annotate variant_effect_predictor/Bio/EnsEMBL/Pipeline/Base.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 package Bio::EnsEMBL::Pipeline::Base;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 use warnings;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 use base qw/Bio::EnsEMBL::Hive::Process/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 use Bio::EnsEMBL::Utils::Exception qw/throw/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 use Bio::EnsEMBL::Utils::IO qw/work_with_file/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 use Bio::EnsEMBL::Utils::Scalar qw/check_ref/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 use File::Find;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 use File::Spec;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 use File::Path qw/mkpath/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 use POSIX qw/strftime/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 # Takes in a key, checks if the current $self->param() was an empty array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 # and replaces it with the value from $self->param_defaults()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 sub reset_empty_array_param {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 my ($self, $key) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 my $param_defaults = $self->param_defaults();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $current = $self->param($key);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 my $replacement = $self->param_defaults()->{$key};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 if(check_ref($current, 'ARRAY') && check_ref($replacement, 'ARRAY')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 if(! @{$current}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 $self->fine('Restting param %s because the given array was empty', $key);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $self->param($key, $replacement);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 =head2 get_Slices
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 Arg[1] : String type of DB to use (defaults to core)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 Arg[2] : Boolean should we filter the slices if it is human
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Example : my $slices = $self->get_Slices('core', 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Description : Basic get_Slices() method to return all distinct slices
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 for a species but also optionally filters for the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 first portion of Human Y which is a non-informative region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 (composed solely of N's). The code will only filter for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 GRCh37 forcing the developer to update the test for other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 regions.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 Returntype : ArrayRef[Bio::EnsEMBL::Slice]
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 Exceptions : Thrown if you are filtering Human but also are not on GRCh37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 sub get_Slices {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 my ($self, $type, $filter_human) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 my $dba = $self->get_DBAdaptor($type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 throw "Cannot get a DB adaptor" unless $dba;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 my $sa = $dba->get_SliceAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 my @slices = @{$sa->fetch_all('toplevel', undef, 1, undef, undef)};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 if($filter_human) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 my $production_name = $self->production_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 if($production_name eq 'homo_sapiens') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 my ($cs) = @{$dba->get_CoordSystem()->fetch_all()};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 my $expected = 'GRCh37';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 if($cs->version() ne $expected) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 throw sprintf(q{Cannot continue as %s's coordinate system %s is not the expected %s }, $production_name, $cs->version(), $expected);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 @slices = grep {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 if($_->seq_region_name() eq 'Y' && $_->end() < 2649521) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 $self->info('Filtering small Y slice');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 } @slices;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 return [ sort { $a->length() <=> $b->length() } @slices ];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 # Registry is loaded by Hive (see beekeeper_extra_cmdline_options() in conf)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 sub get_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 my $species = $self->param('species');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 $type ||= 'core';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 return Bio::EnsEMBL::Registry->get_DBAdaptor($species, $type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 sub cleanup_DBAdaptor {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 my ($self, $type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my $dba = $self->get_DBAdaptor($type);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 $dba->clear_caches;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $dba->dbc->disconnect_if_idle;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 sub get_dir {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my ($self, @extras) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 my $base_dir = $self->param('base_path');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 my $dir = File::Spec->catdir($base_dir, @extras);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 mkpath($dir);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 return $dir;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 sub web_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 # my $mc = $self->get_DBAdaptor()->get_MetaContainer();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 # my $name = $mc->single_value_by_key('species.url'); # change back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 my $name = ucfirst($self->production_name());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 return $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 sub scientific_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my $dba = $self->get_DBAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 my $mc = $dba->get_MetaContainer();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 my $name = $mc->get_scientific_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $dba->dbc()->disconnect_if_idle();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return $name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 sub assembly {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 my $dba = $self->get_DBAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 return $dba->get_CoordSystemAdaptor()->fetch_all()->[0]->version();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 sub production_name {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 my ($self, $name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 my $dba;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 if($name) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 $dba = Bio::EnsEMBL::Registry->get_DBAdaptor($name, 'core');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $dba = $self->get_DBAdaptor();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 my $mc = $dba->get_MetaContainer();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my $prod = $mc->get_production_name();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $dba->dbc()->disconnect_if_idle();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 return $prod;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 # Closes file handle, and deletes the file stub if no data was written to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 # the file handle (using tell). We can also only close a file handle and unlink
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 # the data if it was open otherwise we just ignore it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 # Returns success if we managed to delete the file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 sub tidy_file_handle {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my ($self, $fh, $path) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 if($fh->opened()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 my $unlink = ($fh->tell() == 0) ? 1 : 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 $fh->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 if($unlink && -f $path) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 unlink($path);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 sub info {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 my ($self, $msg, @params) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 if ($self->debug() > 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my $formatted_msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 if(scalar(@params)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $formatted_msg = sprintf($msg, @params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 $formatted_msg = $msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 printf STDERR "INFO [%s]: %s %s\n", $self->_memory_consumption(), strftime('%c',localtime()), $formatted_msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 sub fine {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my ($self, $msg, @params) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 if ($self->debug() > 2) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 my $formatted_msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 if(scalar(@params)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $formatted_msg = sprintf($msg, @params);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 $formatted_msg = $msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 printf STDERR "FINE [%s]: %s %s\n", $self->_memory_consumption(), strftime('%c',localtime()), $formatted_msg;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 sub _memory_consumption {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 my $content = `ps -o rss $$ | grep -v RSS`;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 return q{?MB} if $? >> 8 != 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $content =~ s/\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 my $mem = $content/1024;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 return sprintf('%.2fMB', $mem);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 sub find_files {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 my ($self, $dir, $boolean_callback) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $self->throw("Cannot find path $dir") unless -d $dir;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 my @files;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 find(sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my $path = $File::Find::name;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if($boolean_callback->($_)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 push(@files, $path);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 }, $dir);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 return \@files;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 sub unlink_all_files {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my ($self, $dir) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 $self->info('Removing files from the directory %s', $dir);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 #Delete anything which is a file & not the current or higher directory
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my $boolean_callback = sub {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 return ( $_[0] =~ /^\.\.?$/) ? 0 : 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 my $files = $self->find_files($dir, $boolean_callback);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 foreach my $file (@{$files}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 $self->fine('Unlinking %s', $file);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 unlink $file;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->info('Removed %d file(s)', scalar(@{$files}));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 return;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 sub assert_executable {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my ($self, $exe) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 if(! -x $exe) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 my $output = `which $exe 2>&1`;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 chomp $output;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 my $rc = $? >> 8;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 if($rc != 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 my $possible_location = `locate -l 1 $exe 2>&1`;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 my $loc_rc = $? >> 8;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 if($loc_rc != 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $msg = 'Cannot find the executable "%s" after trying "which" and "locate -l 1". Please ensure it is on your PATH or use an absolute location and try again';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $self->throw(sprintf($msg, $exe));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 1;