5 use File::Slurp 'slurp';
6 use List::MoreUtils 'uniq';
9 require 'lib/Mouse/Spec.pm';
11 my $MouseTinyFile = shift || 'lib/Mouse/Tiny.pm';
22 && !/Spec/ # has no functionality
23 && !/TypeRegistry/ # deprecated
24 && !/\bouse/ # ouse.pm
32 'lib/Mouse/Exporter.pm',
34 'lib/Mouse/Meta/TypeConstraint.pm',
35 'lib/Mouse/Util/TypeConstraints.pm',
38 my $contents = slurp $file;
40 $contents =~ s/__END__\b.*//s; # remove documentation
41 $contents =~ s/1;\n*$//; # remove success indicator
43 $mouse_tiny .= "BEGIN{ # #file\n";
44 $mouse_tiny .= $contents;
48 open my $handle, ">$MouseTinyFile";
50 print { $handle } << "EOF";
51 # This file was generated by $0 from Mouse $Mouse::Spec::VERSION.
53 # ANY CHANGES MADE HERE WILL BE LOST!
57 print { $handle } << 'EOF';
58 # if regular Mouse is loaded, bail out
59 unless ($INC{'Mouse.pm'}) {
62 for my $file (@files) {
63 (my $inc = $file) =~ s{^lib/}{};
64 printf { $handle } "%-45s = __FILE__;\n", "\$INC{'$inc'}";
67 print { $handle } << 'EOF';
68 eval sprintf("#line %d %s\n", __LINE__, __FILE__) . <<'END_OF_TINY';
70 # tell Perl we already have all of the Mouse files loaded:
73 print { $handle } "\n# and now their contents\n\n";
75 print { $handle } $mouse_tiny;
77 print { $handle } << 'EOF';
80 } # unless Mouse.pm is loaded
83 print { $handle } << 'EOF';
86 Mouse::Exporter->setup_import_methods(also => 'Mouse');