We no longer have shebangs in pm files, so stop removing package lines
[gitmo/Mouse.git] / author / 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({
cae2769d 13 wanted => sub {
14 push @files, $_
15 if -f $_
16 && !/Squirrel|MouseX|\.sw[po]$/
17 && !/\bouse/
18 },
f1db776d 19 no_chdir => 1,
20}, 'lib');
21
22my $mouse_tiny = '';
23
24for my $file (uniq 'lib/Mouse/Util.pm', sort @files) {
25 my $contents = slurp $file;
26
27 $contents =~ s/__END__\b.*//s; # remove documentation
28 $contents =~ s/1;\n*$//; # remove success indicator
f1db776d 29
30 $contents =~ s/^use Mouse\S*\s*\n//mg; # we're already loading everything
31 $contents =~ s/^use (Mouse\S*)\s*(.+);/BEGIN { $1->import($2) }/mg;
32
33 $mouse_tiny .= $contents;
34}
35
f1db776d 36open my $handle, '>lib/Mouse/Tiny.pm' or die "Can't write lib/Mouse/Tiny.pm: $!";
37
38print { $handle } << 'EOF';
f1db776d 39# THIS FILE IS AUTOGENERATED!
40
41# if regular Mouse is loaded, bail out
2da0530e 42unless ($INC{'Mouse.pm'}) {
43eval q{
f1db776d 44
45# tell Perl we already have all of the Mouse files loaded:
46EOF
47
48for my $file (@files) {
49 (my $inc = $file) =~ s{^lib/}{};
50 print { $handle } "\$INC{'$inc'} = __FILE__;\n";
51}
52
53print { $handle } "\n# and now their contents\n\n";
54
55print { $handle } $mouse_tiny;
2da0530e 56
57print { $handle } "}; #eval\n} #unless\n\n";
58
59print { $handle } << 'EOF';
60package Mouse::Tiny;
61use base 'Mouse';
62
63EOF
64
f1db776d 65print { $handle } "1;\n\n";
66