From: Steve Scaffidi Date: Fri, 11 Sep 2009 20:45:34 +0000 (-0400) Subject: added some of uri's utility actions for build script X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=afbe012678ecefed824b148a88598a7240e6198b;p=urisagit%2FStem.git added some of uri's utility actions for build script --- diff --git a/BuildStem.pm b/BuildStem.pm index 581e12f..4617d19 100644 --- a/BuildStem.pm +++ b/BuildStem.pm @@ -64,4 +64,103 @@ sub find_binary { } +########################################################### +# Various convenience routines. +# +# To use ACTION_foo, call ./Build foo + + + +# ACTION: grep through MANIFEST +# command line args: +# files= +# +# do we need this action? +# + +sub ACTION_grep_manifest { + + my( $self ) = @_ ; + + my @manifest_sublist = $self->grep_manifest() ; + + print join( "\n", @manifest_sublist ), "\n" ; + return; +} + + + +# grep through all matched files +# command line args: +# files= (default is all .pm files) +# re= + +sub ACTION_grep { + + my( $self ) = @_ ; + + my $args = $self->{'args'} ; + + my $file_regex = $args->{ files } || qr/\.pm$/ ; + my $grep_regex = $args->{ re } or die "need grep regex" ; + + my @manifest_sublist = $self->grep_manifest( $file_regex ) ; + + local( @ARGV ) = @manifest_sublist ; + + while( <> ) { + + next unless /$grep_regex/ ; + + print "$ARGV:$. $_" + } + continue { + + close ARGV if eof ; + } + + return; +} + +my ( @manifest_lines ) ; + +# MANIFEST helper subs + +sub grep_manifest { + + my( $self, $file_regex ) = @_ ; + + $file_regex ||= $self->{ args }{ files } || qr/.*/ ; + + manifest_load() ; + + return grep( /$file_regex/, @manifest_lines ) ; +} + +sub manifest_load { + + return if @manifest_lines ; + + @manifest_lines = grep ! /^\s*$|^\s*#/, read_file( 'MANIFEST' ) ; + + chomp @manifest_lines ; + + return ; +} + +sub read_file { + + my ( $file_name ) = @_ ; + + local( *FH ); + + open( FH, $file_name ) || die "Can't open $file_name $!"; + + return if wantarray; + + read FH, my $buf, -s FH; + return $buf; +} + + 1;