Commit | Line | Data |
10d487cb |
1 | package Catalyst::Build; |
2 | |
3 | use strict; |
4 | use Module::Build; |
5 | use base 'Module::Build'; |
6 | use Path::Class; |
7 | use File::Find 'find'; |
8 | |
9 | our @ignore = |
10 | qw/Build Build.PL Changes MANIFEST META.yml Makefile.PL Makefile README |
11 | _build blib lib script t/; |
12 | |
13 | our $FAKE; |
14 | our $ignore = '^(' . join( '|', @ignore ) . ')$'; |
15 | |
16 | =head1 NAME |
17 | |
18 | Catalyst::Build - Module::Build extension for Catalyst |
19 | |
20 | =head1 SYNOPSIS |
21 | |
22 | See L<Catalyst> |
23 | |
24 | =head1 DESCRIPTION |
25 | |
26 | L<Module::Build> extension for Catalyst. |
27 | |
28 | =head1 DEPRECATION NOTICE |
29 | |
30 | This module is deprecated in favor of L<Module::Install::Catalyst>. |
31 | |
32 | =head1 METHODS |
33 | |
34 | =over 4 |
35 | |
36 | =item ACTION_install |
37 | |
38 | =cut |
39 | |
40 | sub new { |
41 | my $class = shift; |
42 | my $self = $class->SUPER::new(@_); |
43 | |
44 | my $app_name = $self->{properties}{module_name}; |
45 | warn <<"EOF"; |
46 | |
47 | Note: |
48 | |
49 | The use of Build.PL for building and distributing Catalyst |
50 | applications is deprecated in Catalyst 5.58. |
51 | |
52 | We recommend using the new Module::Install-based Makefile |
53 | system. You can generate a new Makefile.PL for your application |
54 | by running: |
55 | |
56 | catalyst.pl -force -makefile $app_name |
57 | |
58 | EOF |
59 | |
60 | return $self; |
61 | } |
62 | |
63 | sub ACTION_install { |
64 | my $self = shift; |
65 | $self->SUPER::ACTION_install; |
66 | $self->ACTION_install_extras; |
67 | } |
68 | |
69 | =item ACTION_fakeinstall |
70 | |
71 | =cut |
72 | |
73 | sub ACTION_fakeinstall { |
74 | my $self = shift; |
75 | $self->SUPER::ACTION_fakeinstall; |
76 | local $FAKE = 1; |
77 | $self->ACTION_install_extras; |
78 | } |
79 | |
80 | =item ACTION_install_extras |
81 | |
82 | =cut |
83 | |
84 | sub ACTION_install_extras { |
85 | my $self = shift; |
86 | my $prefix = $self->{properties}{destdir} || undef; |
87 | my $sitelib = $self->install_destination('lib'); |
88 | my @path = defined $prefix ? ( $prefix, $sitelib ) : ($sitelib); |
89 | my $path = dir( @path, split( '::', $self->{properties}{module_name} ) ); |
90 | my @files = $self->_find_extras; |
91 | print "Installing extras to $path\n"; |
92 | for (@files) { |
93 | $FAKE |
94 | ? print "$_ -> $path (FAKE)\n" |
95 | : $self->copy_if_modified( $_, $path ); |
96 | } |
97 | } |
98 | |
99 | sub _find_extras { |
100 | my $self = shift; |
101 | my @all = glob '*'; |
102 | my @files; |
103 | for my $file (@all) { |
104 | next if $file =~ /$ignore/; |
105 | if ( -d $file ) { |
106 | find( |
107 | sub { |
108 | return if -d; |
109 | push @files, $File::Find::name; |
110 | }, |
111 | $file |
112 | ); |
113 | } |
114 | else { push @files, $file } |
115 | } |
116 | return @files; |
117 | } |
118 | |
119 | =back |
120 | |
121 | =head1 AUTHOR |
122 | |
123 | Sebastian Riedel, C<sri@oook.de> |
124 | |
125 | =head1 LICENSE |
126 | |
127 | This library is free software, you can redistribute it and/or modify it under |
128 | the same terms as Perl itself. |
129 | |
130 | =cut |
131 | |
132 | 1; |