Ignore the generated Mouse::Tiny
[gitmo/Mouse.git] / generate-mouse-tiny.pl
CommitLineData
f1db776d 1#!/usr/bin/env perl
2use strict;
3use warnings;
4use File::Find;
5use File::Slurp 'slurp';
6use List::MoreUtils 'uniq';
7
8unlink 'lib/Mouse/Tiny.pm';
9
10my @files;
11
12find({
13 wanted => sub { push @files, $_ if -f $_ && !/Squirrel/ },
14 no_chdir => 1,
15}, 'lib');
16
17my $mouse_tiny = '';
18
19for my $file (uniq 'lib/Mouse/Util.pm', sort @files) {
20 my $contents = slurp $file;
21
22 $contents =~ s/__END__\b.*//s; # remove documentation
23 $contents =~ s/1;\n*$//; # remove success indicator
24 $contents =~ s/^.*\n//; # remove shebang
25
26 $contents =~ s/^use Mouse\S*\s*\n//mg; # we're already loading everything
27 $contents =~ s/^use (Mouse\S*)\s*(.+);/BEGIN { $1->import($2) }/mg;
28
29 $mouse_tiny .= $contents;
30}
31
32$mouse_tiny .= << 'EOF';
33package Mouse::Tiny;
34use base 'Mouse';
35
36EOF
37
38open my $handle, '>lib/Mouse/Tiny.pm' or die "Can't write lib/Mouse/Tiny.pm: $!";
39
40print { $handle } << 'EOF';
41#!/usr/bin/env perl
42# THIS FILE IS AUTOGENERATED!
43
44# if regular Mouse is loaded, bail out
45# XXX: TODO
46
47# tell Perl we already have all of the Mouse files loaded:
48EOF
49
50for my $file (@files) {
51 (my $inc = $file) =~ s{^lib/}{};
52 print { $handle } "\$INC{'$inc'} = __FILE__;\n";
53}
54
55print { $handle } "\n# and now their contents\n\n";
56
57print { $handle } $mouse_tiny;
58print { $handle } "1;\n\n";
59