File: prepare_dist

package info (click to toggle)
libmail-imapclient-perl 3.25-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 1,420 kB
  • ctags: 302
  • sloc: perl: 19,967; makefile: 11
file content (41 lines) | stat: -rwxr-xr-x 942 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl

use warnings;
use strict;

use Parse::RecDescent 1.94;
use File::Copy  qw/move/;

sub read_file {
    my $file = shift;
    local( $/, *FH );
    open( FH, $file ) or return undef;
    return <FH>;
}

build_parser 'lib/Mail/IMAPClient/BodyStructure/Parse.grammar'
           , 'Mail::IMAPClient::BodyStructure::Parse';

build_parser 'lib/Mail/IMAPClient/Thread.grammar'
           , 'Mail::IMAPClient::Thread';

sub build_parser {
    my ($grammarfn, $package) = @_;

    print "* building $package\n";

    my $grammar   = read_file $grammarfn
        or die "cannot read grammar from $grammarfn: $!\n";

    Parse::RecDescent->Precompile($grammar, $package);

    # clumpsy output by Parse::RecDescent
    my $outfn     = $package . '.pm';
    $outfn        =~ s/.*\:\://;

    my $realfn    = $grammarfn;
    $realfn       =~ s/\.\w+$/.pm/;

    move $outfn, $realfn
       or die "cannot move $outfn to $realfn: $!\n";
}