File Coverage

lib/CPANPLUS/Internals/Constants.pm
Criterion Covered Total %
statement 369 409 90.2
branch 30 64 46.8
condition 2 8 25.0
subroutine 103 104 99.0
pod 0 1 0.0
total 504 586 86.0


line stmt bran cond sub pod time code
1             package CPANPLUS::Internals::Constants;
2              
3 20     20   320 use strict;
  20         89  
  20         1001  
4              
5 20     20   8084 use CPANPLUS::Error;
  20         79  
  20         1721  
6              
7 20     20   210 use Config;
  20         42  
  20         1031  
8 20     20   129 use File::Spec;
  20         40  
  20         711  
9 20     20   146 use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
  20         38  
  20         124  
10              
11             require Exporter;
12 20     20   6180 use vars qw[$VERSION @ISA @EXPORT];
  20         39  
  20         1363  
13              
14 20     20   12077 use Package::Constants;
  20         16241  
  20         1852  
15              
16             $VERSION = "0.9916";
17             @ISA = qw[Exporter];
18             @EXPORT = Package::Constants->list( __PACKAGE__ );
19              
20 0     0 0   sub constants { @EXPORT };
21              
22 20         1808 use constant INSTALLER_BUILD
23 20     20   143 => 'CPANPLUS::Dist::Build';
  20         34  
24 20     20   122 use constant INSTALLER_MM => 'CPANPLUS::Dist::MM';
  20         34  
  20         1108  
25 20         1135 use constant INSTALLER_SAMPLE
26 20     20   111 => 'CPANPLUS::Dist::Sample';
  20         36  
27 20     20   103 use constant INSTALLER_BASE => 'CPANPLUS::Dist::Base';
  20         36  
  20         933  
28 20         844 use constant INSTALLER_AUTOBUNDLE
29 20     20   101 => 'CPANPLUS::Dist::Autobundle';
  20         33  
30              
31 20     20   95 use constant SHELL_DEFAULT => 'CPANPLUS::Shell::Default';
  20         34  
  20         966  
32 20     20   119 use constant SHELL_CLASSIC => 'CPANPLUS::Shell::Classic';
  20         35  
  20         1072  
33              
34 20     20   176 use constant CONFIG => 'CPANPLUS::Config';
  20         109  
  20         1501  
35 20     20   181 use constant CONFIG_USER => 'CPANPLUS::Config::User';
  20         71  
  20         1048  
36 20     20   132 use constant CONFIG_SYSTEM => 'CPANPLUS::Config::System';
  20         35  
  20         1075  
37 20     20   97 use constant CONFIG_BOXED => 'CPANPLUS::Config::Boxed';
  20         34  
  20         1053  
38              
39 20         1041 use constant DEFAULT_SOURCE_ENGINE
40 20     20   101 => 'CPANPLUS::Internals::Source::Memory';
  20         45  
41              
42 20     20   97 use constant TARGET_INIT => 'init';
  20         31  
  20         1121  
43 20     20   97 use constant TARGET_CREATE => 'create';
  20         32  
  20         915  
44 20     20   110 use constant TARGET_PREPARE => 'prepare';
  20         36  
  20         1571  
45 20     20   113 use constant TARGET_INSTALL => 'install';
  20         46  
  20         1181  
46 20     20   104 use constant TARGET_IGNORE => 'ignore';
  20         32  
  20         1277  
47              
48 20     20   115 use constant ON_WIN32 => $^O eq 'MSWin32';
  20         49  
  20         1212  
49 20     20   139 use constant ON_NETWARE => $^O eq 'NetWare';
  20         47  
  20         1097  
50 20     20   130 use constant ON_CYGWIN => $^O eq 'cygwin';
  20         30  
  20         1116  
51 20     20   114 use constant ON_VMS => $^O eq 'VMS';
  20         36  
  20         1192  
52 20     20   102 use constant ON_MINIX => $^O eq 'minix';
  20         41  
  20         1112  
53              
54 20     20   119 use constant DOT_CPANPLUS => ON_VMS ? '_cpanplus' : '.cpanplus';
  20         44  
  20         1133  
55              
56 20     20   102 use constant OPT_AUTOFLUSH => '-MCPANPLUS::Internals::Utils::Autoflush';
  20         36  
  20         1115  
57              
58 20         1013 use constant UNKNOWN_DL_LOCATION
59 20     20   192 => 'UNKNOWN-ORIGIN';
  20         63  
60              
61 20     20   122 use constant NMAKE => 'nmake.exe';
  20         35  
  20         1083  
62 20         2580 use constant NMAKE_URL =>
63 20     20   102 'ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe';
  20         34  
64              
65             use constant INSTALL_VIA_PACKAGE_MANAGER
66 11 50       400 => sub { my $fmt = $_[0] or return;
67 0 0 0     0 return 1 if $fmt ne INSTALLER_BUILD and
68             $fmt ne INSTALLER_MM;
69 20     20   134 };
  20         33  
  20         2040  
70              
71 20     20   121 use constant IS_CODEREF => sub { ref $_[-1] eq 'CODE' };
  20         55  
  20         1727  
  16         5108  
72 386         63761 use constant IS_MODOBJ => sub { UNIVERSAL::isa($_[-1],
73 20     20   125 'CPANPLUS::Module') };
  20         46  
  20         2238  
74 7         89 use constant IS_FAKE_MODOBJ => sub { UNIVERSAL::isa($_[-1],
75 20     20   119 'CPANPLUS::Module::Fake') };
  20         37  
  20         1830  
76 467         130999 use constant IS_AUTHOBJ => sub { UNIVERSAL::isa($_[-1],
77 20     20   114 'CPANPLUS::Module::Author') };
  20         37  
  20         1692  
78             use constant IS_FAKE_AUTHOBJ
79 1         9 => sub { UNIVERSAL::isa($_[-1],
80 20     20   123 'CPANPLUS::Module::Author::Fake') };
  20         66  
  20         1829  
81              
82 30         3056 use constant IS_CONFOBJ => sub { UNIVERSAL::isa($_[-1],
83 20     20   125 'CPANPLUS::Configure') };
  20         38  
  20         1618  
84              
85 1         27 use constant IS_RVOBJ => sub { UNIVERSAL::isa($_[-1],
86 20     20   150 'CPANPLUS::Backend::RV') };
  20         37  
  20         1837  
87              
88             use constant IS_INTERNALS_OBJ
89 15         845 => sub { UNIVERSAL::isa($_[-1],
90 20     20   159 'CPANPLUS::Internals') };
  20         122  
  20         1847  
91              
92 20 100   20   254 use constant IS_FILE => sub { return 1 if -e $_[-1] };
  20         161  
  20         2915  
  291         24197  
93              
94             use constant FILE_EXISTS => sub {
95 99         10350 my $file = $_[-1];
96 99 50       642 return 1 if IS_FILE->($file);
97 0         0 local $Carp::CarpLevel =
98             $Carp::CarpLevel+2;
99 0         0 error(loc( q[File '%1' does not exist],
100             $file));
101 0         0 return;
102 20     20   158 };
  20         128  
  20         2795  
103              
104             use constant FILE_READABLE => sub {
105 23         2202 my $file = $_[-1];
106 23 50 33     5269 return 1 if -e $file && -r _;
107 0         0 local $Carp::CarpLevel =
108             $Carp::CarpLevel+2;
109 0         0 error( loc( q[File '%1' is not readable ].
110             q[or does not exist], $file));
111 0         0 return;
112 20     20   250 };
  20         37  
  20         1938  
113 20 100   20   121 use constant IS_DIR => sub { return 1 if -d $_[-1] };
  20         40  
  20         2528  
  90         3765  
114              
115             use constant DIR_EXISTS => sub {
116 73         9787 my $dir = $_[-1];
117 73 100       464 return 1 if IS_DIR->($dir);
118 1         15 local $Carp::CarpLevel =
119             $Carp::CarpLevel+2;
120 1         33 error(loc(q[Dir '%1' does not exist],
121             $dir));
122 1         15 return;
123 20     20   118 };
  20         45  
  20         4016  
124              
125             ### On VMS, if the $Config{make} is either MMK
126             ### or MMS, then the makefile is 'DESCRIP.MMS'.
127             use constant MAKEFILE => sub { my $file =
128             (ON_VMS and
129 32         4894 $Config::Config{make} =~ /MM[S|K]/i)
130             ? 'DESCRIP.MMS'
131             : 'Makefile';
132              
133             return @_
134 32 100       4055 ? File::Spec->catfile( @_, $file )
135             : $file;
136 20     20   142 };
  20         78  
  20         2181  
137             use constant MAKEFILE_PL => sub { return @_
138 62 100       3608 ? File::Spec->catfile( @_,
139             'Makefile.PL' )
140             : 'Makefile.PL';
141 20     20   127 };
  20         32  
  20         1847  
142             use constant BUILD_PL => sub { return @_
143 21 100       1797 ? File::Spec->catfile( @_,
144             'Build.PL' )
145             : 'Build.PL';
146 20     20   126 };
  20         40  
  20         1821  
147              
148             use constant META_YML => sub { return @_
149 27 50       2999 ? File::Spec->catfile( @_, 'META.yml' )
150             : 'META.yml';
151 20     20   122 };
  20         37  
  20         1941  
152              
153             use constant MYMETA_YML => sub { return @_
154 3 50       267 ? File::Spec->catfile( @_, 'MYMETA.yml' )
155             : 'MYMETA.yml';
156 20     20   112 };
  20         34  
  20         1624  
157              
158             use constant META_JSON => sub { return @_
159 21 50       2431 ? File::Spec->catfile( @_, 'META.json' )
160             : 'META.json';
161 20     20   127 };
  20         34  
  20         1799  
162              
163             use constant MYMETA_JSON => sub { return @_
164 3 50       290 ? File::Spec->catfile( @_, 'MYMETA.json' )
165             : 'MYMETA.json';
166 20     20   131 };
  20         34  
  20         1719  
167              
168             use constant BLIB => sub { return @_
169 59 100       4739 ? File::Spec->catfile(@_, 'blib')
170             : 'blib';
171 20     20   142 };
  20         33  
  20         1118  
172              
173 20     20   108 use constant LIB => 'lib';
  20         32  
  20         1703  
174             use constant LIB_DIR => sub { return @_
175 7 50       216 ? File::Spec->catdir(@_, LIB)
176             : LIB;
177 20     20   114 };
  20         47  
  20         1484  
178 20     20   121 use constant AUTO => 'auto';
  20         35  
  20         1935  
179             use constant LIB_AUTO_DIR => sub { return @_
180 0 0       0 ? File::Spec->catdir(@_, LIB, AUTO)
181             : File::Spec->catdir(LIB, AUTO)
182 20     20   135 };
  20         53  
  20         1543  
183 20     20   112 use constant ARCH => 'arch';
  20         52  
  20         1679  
184             use constant ARCH_DIR => sub { return @_
185 0 0       0 ? File::Spec->catdir(@_, ARCH)
186             : ARCH;
187 20     20   110 };
  20         39  
  20         2704  
188             use constant ARCH_AUTO_DIR => sub { return @_
189 0 0       0 ? File::Spec->catdir(@_,ARCH,AUTO)
190             : File::Spec->catdir(ARCH,AUTO)
191 20     20   205 };
  20         113  
  20         2205  
192              
193             use constant BLIB_LIBDIR => sub { return @_
194 0 0       0 ? File::Spec->catdir(
195             @_, BLIB->(), LIB )
196             : File::Spec->catdir( BLIB->(), LIB );
197 20     20   124 };
  20         35  
  20         1163  
198              
199 20     20   108 use constant BIN => 'bin';
  20         46  
  20         1198  
200              
201 20     20   124 use constant SCRIPT => 'script';
  20         43  
  20         1767  
202              
203             use constant CONFIG_USER_LIB_DIR => sub {
204 0         0 require CPANPLUS::Internals::Utils;
205 0         0 LIB_DIR->(
206             CPANPLUS::Internals::Utils->_home_dir,
207             DOT_CPANPLUS
208             );
209 20     20   116 };
  20         38  
  20         2288  
210             use constant CONFIG_USER_FILE => sub {
211 0         0 File::Spec->catfile(
212             CONFIG_USER_LIB_DIR->(),
213             split('::', CONFIG_USER),
214             ) . '.pm';
215 20     20   176 };
  20         37  
  20         2894  
216             use constant CONFIG_SYSTEM_FILE => sub {
217 0         0 require CPANPLUS::Internals;
218 0         0 require File::Basename;
219             my $dir = File::Basename::dirname(
220 0         0 $INC{'CPANPLUS/Internals.pm'}
221             );
222              
223             ### XXX use constants
224 0         0 File::Spec->catfile(
225             $dir, qw[Config System.pm]
226             );
227 20     20   129 };
  20         35  
  20         2679  
228              
229 2         13 use constant README => sub { my $obj = $_[0];
230 2         36 my $pkg = $obj->package_name;
231 2         30 $pkg .= '-' . $obj->package_version .
232             '.readme';
233 2         16 return $pkg;
234 20     20   143 };
  20         43  
  20         1499  
235 20     20   127 use constant META_EXT => 'meta';
  20         36  
  20         2417  
236              
237 1         574 use constant META => sub { my $obj = $_[0];
238 1         9 my $pkg = $obj->package_name;
239 1         4 $pkg .= '-' . $obj->package_version .
240             '.' . META_EXT;
241 1         4 return $pkg;
242 20     20   130 };
  20         38  
  20         3259  
243              
244             use constant OPEN_FILE => sub {
245 93         851 my($file, $mode) = (@_, '');
246 93         328 my $fh;
247 93 50       8834 open $fh, "$mode" . $file
248             or error(loc(
249             "Could not open file '%1': %2",
250             $file, $!));
251 93 50       1298 return $fh if $fh;
252 0         0 return;
253 20     20   146 };
  20         39  
  20         2593  
254              
255             use constant OPEN_DIR => sub {
256 7         18 my $dir = shift;
257 7         20 my $dh;
258 7 50       438 opendir $dh, $dir or error(loc(
259             "Could not open dir '%1': %2", $dir, $!
260             ));
261              
262 7 50       54 return $dh if $dh;
263 0         0 return;
264 20     20   136 };
  20         95  
  20         4552  
265              
266             use constant READ_DIR => sub {
267 7         16 my $dir = shift;
268 7 50       45 my $dh = OPEN_DIR->( $dir ) or return;
269              
270             ### exclude . and ..
271 7         229 my @files = grep { $_ !~ /^\.{1,2}/ }
  21         129  
272             readdir($dh);
273              
274             ### Remove trailing dot on VMS when
275             ### using VMS syntax.
276 7         19 if( ON_VMS ) {
277             s/(?
278             }
279              
280 7         218 return @files;
281 20     20   150 };
  20         39  
  20         2903  
282              
283             use constant STRIP_GZ_SUFFIX
284             => sub {
285 62 50       328 my $file = $_[0] or return;
286 62         591 $file =~ s/.gz$//i;
287 62         259 return $file;
288 20     20   155 };
  20         38  
  20         1506  
289              
290 20     20   116 use constant CHECKSUMS => 'CHECKSUMS';
  20         36  
  20         1191  
291 20     20   157 use constant PGP_HEADER => '-----BEGIN PGP SIGNED MESSAGE-----';
  20         42  
  20         1186  
292 20         1261 use constant ENV_CPANPLUS_CONFIG
293 20     20   117 => 'PERL5_CPANPLUS_CONFIG';
  20         36  
294 20         1229 use constant ENV_CPANPLUS_IS_EXECUTING
295 20     20   148 => 'PERL5_CPANPLUS_IS_EXECUTING';
  20         40  
296 20     20   130 use constant DEFAULT_EMAIL => 'cpanplus@example.com';
  20         51  
  20         1988  
297             use constant CPANPLUS_UA => sub { ### for the version number ###
298 0         0 require CPANPLUS::Internals;
299 0         0 "CPANPLUS/$CPANPLUS::Internals::VERSION"
300 20     20   143 };
  20         36  
  20         2243  
301             use constant TESTERS_URL => sub {
302 0         0 'http://cpantesters.org/distro/'.
303             uc(substr($_[0],0,1)) .'/'. $_[0] . '.yaml';
304 20     20   131 };
  20         54  
  20         2022  
305             use constant TESTERS_DETAILS_URL
306             => sub {
307 0         0 'http://cpantesters.org/distro/'.
308             uc(substr($_[0],0,1)) .'/'. $_[0];
309 20     20   141 };
  20         37  
  20         3163  
310              
311             use constant CREATE_FILE_URI
312             => sub {
313 66 50       9337 my $dir = $_[0] or return;
314 66 50       688 return $dir =~ m|^/|
315             ? 'file://' . $dir
316             : 'file:///' . $dir;
317 20     20   142 };
  20         36  
  20         1226  
318              
319 20     20   111 use constant EMPTY_DSLIP => ' ';
  20         36  
  20         1139  
320              
321 20         1193 use constant CUSTOM_AUTHOR_ID
322 20     20   115 => 'LOCAL';
  20         49  
323              
324 20         1212 use constant DOT_SHELL_DEFAULT_RC
325 20     20   174 => '.shell-default.rc';
  20         57  
326              
327 20         1113 use constant SOURCE_SQLITE_DB
328 20     20   139 => 'db.sql';
  20         35  
329              
330 20     20   125 use constant PREREQ_IGNORE => 0;
  20         34  
  20         942  
331 20     20   99 use constant PREREQ_INSTALL => 1;
  20         33  
  20         903  
332 20     20   112 use constant PREREQ_ASK => 2;
  20         44  
  20         835  
333 20     20   98 use constant PREREQ_BUILD => 3;
  20         50  
  20         970  
334 20     20   149 use constant BOOLEANS => [0,1];
  20         34  
  20         2208  
335             use constant CALLING_FUNCTION
336 1   50     18 => sub { my $lvl = $_[0] || 0;
337 1         24 return join '::', (caller(2+$lvl))[3]
338 20     20   136 };
  20         33  
  20         1345  
339 20     20   112 use constant PERL_CORE => 'perl';
  20         43  
  20         1175  
340 20     20   112 use constant PERL_WRAPPER => 'use strict; BEGIN { my $old = select STDERR; $|++; select $old; $|++; $0 = shift(@ARGV); my $rv = do($0); die $@ if $@; }';
  20         44  
  20         960  
341 20     20   98 use constant STORABLE_EXT => '.stored';
  20         55  
  20         3759  
342              
343 0 0       0 use constant GET_XS_FILES => sub { my $dir = $_[0] or return;
344 0         0 require File::Find;
345 0         0 my @files;
346             File::Find::find(
347 0 0       0 sub { push @files, $File::Find::name
348             if $File::Find::name =~ /\.xs$/i
349 0         0 }, $dir );
350              
351 0         0 return @files;
352 20     20   136 };
  20         53  
  20         3208  
353              
354             use constant INSTALL_LOG_FILE
355 0 0       0 => sub { my $obj = shift or return;
356 0         0 my $name = $obj->name; $name =~ s/::/-/g;
  0         0  
357 0         0 $name .= '-'. $obj->version;
358 0         0 $name .= '-'. scalar(time) . '.log';
359 0         0 return $name;
360 20     20   146 };
  20         373  
  20         2841  
361              
362 20         131 use constant ON_OLD_CYGWIN => do { ON_CYGWIN and $] < 5.008
  20         1230  
363             ? loc(
364             "Your perl version for %1 is too low; ".
365             "Require %2 or higher for this function",
366             $^O, '5.8.0' )
367             : '';
368 20     20   400 };
  20         224  
369              
370             ### XXX these 2 are probably obsolete -- check & remove;
371 20     20   213 use constant DOT_EXISTS => '.exists';
  20         37  
  20         3123  
372              
373             use constant QUOTE_PERL_ONE_LINER
374 0 0         => sub { my $line = shift or return;
375              
376             ### use double quotes on these systems
377 0           return qq["$line"]
378             if ON_WIN32 || ON_NETWARE || ON_VMS;
379              
380             ### single quotes on the rest
381 0           return qq['$line'];
382 20     20   234 };
  20         56  
  20         1644  
383              
384             1;
385              
386             # Local variables:
387             # c-indentation-style: bsd
388             # c-basic-offset: 4
389             # indent-tabs-mode: nil
390             # End:
391             # vim: expandtab shiftwidth=4: