1 package CPANPLUS::Internals::Constants;
8 use Locale::Maketext::Simple Class => 'CPANPLUS', Style => 'gettext';
11 use vars qw[$VERSION @ISA @EXPORT];
13 use Package::Constants;
18 @EXPORT = Package::Constants->list( __PACKAGE__ );
21 sub constants { @EXPORT };
23 use constant INSTALLER_BUILD
24 => 'CPANPLUS::Dist::Build';
25 use constant INSTALLER_MM => 'CPANPLUS::Dist::MM';
26 use constant INSTALLER_SAMPLE
27 => 'CPANPLUS::Dist::Sample';
28 use constant INSTALLER_BASE => 'CPANPLUS::Dist::Base';
30 use constant CONFIG => 'CPANPLUS::Config';
31 use constant CONFIG_USER => 'CPANPLUS::Config::User';
32 use constant CONFIG_SYSTEM => 'CPANPLUS::Config::System';
34 use constant TARGET_CREATE => 'create';
35 use constant TARGET_PREPARE => 'prepare';
36 use constant TARGET_INSTALL => 'install';
37 use constant TARGET_IGNORE => 'ignore';
38 use constant DOT_CPANPLUS => $^O eq 'VMS' ? '_cpanplus' : '.cpanplus';
40 use constant OPT_AUTOFLUSH => '-MCPANPLUS::Internals::Utils::Autoflush';
42 use constant UNKNOWN_DL_LOCATION
45 use constant NMAKE => 'nmake.exe';
46 use constant NMAKE_URL =>
47 'ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe';
49 use constant INSTALL_VIA_PACKAGE_MANAGER
50 => sub { my $fmt = $_[0] or return;
51 return 1 if $fmt ne INSTALLER_BUILD and
55 use constant IS_CODEREF => sub { ref $_[-1] eq 'CODE' };
56 use constant IS_MODOBJ => sub { UNIVERSAL::isa($_[-1],
57 'CPANPLUS::Module') };
58 use constant IS_FAKE_MODOBJ => sub { UNIVERSAL::isa($_[-1],
59 'CPANPLUS::Module::Fake') };
60 use constant IS_AUTHOBJ => sub { UNIVERSAL::isa($_[-1],
61 'CPANPLUS::Module::Author') };
62 use constant IS_FAKE_AUTHOBJ
63 => sub { UNIVERSAL::isa($_[-1],
64 'CPANPLUS::Module::Author::Fake') };
66 use constant IS_CONFOBJ => sub { UNIVERSAL::isa($_[-1],
67 'CPANPLUS::Configure') };
69 use constant IS_RVOBJ => sub { UNIVERSAL::isa($_[-1],
70 'CPANPLUS::Backend::RV') };
72 use constant IS_INTERNALS_OBJ
73 => sub { UNIVERSAL::isa($_[-1],
74 'CPANPLUS::Internals') };
76 use constant IS_FILE => sub { return 1 if -e $_[-1] };
78 use constant FILE_EXISTS => sub {
80 return 1 if IS_FILE->($file);
81 local $Carp::CarpLevel =
83 error(loc( q[File '%1' does not exist],
88 use constant FILE_READABLE => sub {
90 return 1 if -e $file && -r _;
91 local $Carp::CarpLevel =
93 error( loc( q[File '%1' is not readable ].
94 q[or does not exist], $file));
97 use constant IS_DIR => sub { return 1 if -d $_[-1] };
99 use constant DIR_EXISTS => sub {
101 return 1 if IS_DIR->($dir);
102 local $Carp::CarpLevel =
104 error(loc(q[Dir '%1' does not exist],
109 use constant MAKEFILE_PL => sub { return @_
110 ? File::Spec->catfile( @_,
114 use constant MAKEFILE => sub { return @_
115 ? File::Spec->catfile( @_,
119 use constant BUILD_PL => sub { return @_
120 ? File::Spec->catfile( @_,
125 use constant BLIB => sub { return @_
126 ? File::Spec->catfile(@_, 'blib')
130 use constant LIB => 'lib';
131 use constant LIB_DIR => sub { return @_
132 ? File::Spec->catdir(@_, LIB)
135 use constant AUTO => 'auto';
136 use constant LIB_AUTO_DIR => sub { return @_
137 ? File::Spec->catdir(@_, LIB, AUTO)
138 : File::Spec->catdir(LIB, AUTO)
140 use constant ARCH => 'arch';
141 use constant ARCH_DIR => sub { return @_
142 ? File::Spec->catdir(@_, ARCH)
145 use constant ARCH_AUTO_DIR => sub { return @_
146 ? File::Spec->catdir(@_,ARCH,AUTO)
147 : File::Spec->catdir(ARCH,AUTO)
150 use constant BLIB_LIBDIR => sub { return @_
151 ? File::Spec->catdir(
153 : File::Spec->catdir( BLIB->(), LIB );
156 use constant CONFIG_USER_LIB_DIR => sub {
157 require CPANPLUS::Internals::Utils;
159 CPANPLUS::Internals::Utils->_home_dir,
163 use constant CONFIG_USER_FILE => sub {
165 CONFIG_USER_LIB_DIR->(),
166 split('::', CONFIG_USER),
169 use constant CONFIG_SYSTEM_FILE => sub {
170 require CPANPLUS::Internals;
171 require File::Basename;
172 my $dir = File::Basename::dirname(
173 $INC{'CPANPLUS/Internals.pm'}
176 ### XXX use constants
178 $dir, qw[Config System.pm]
182 use constant README => sub { my $obj = $_[0];
183 my $pkg = $obj->package_name;
184 $pkg .= '-' . $obj->package_version .
188 use constant OPEN_FILE => sub {
189 my($file, $mode) = (@_, '');
191 open $fh, "$mode" . $file
193 "Could not open file '%1': %2",
199 use constant STRIP_GZ_SUFFIX
201 my $file = $_[0] or return;
206 use constant CHECKSUMS => 'CHECKSUMS';
207 use constant PGP_HEADER => '-----BEGIN PGP SIGNED MESSAGE-----';
208 use constant ENV_CPANPLUS_CONFIG
209 => 'PERL5_CPANPLUS_CONFIG';
210 use constant ENV_CPANPLUS_IS_EXECUTING
211 => 'PERL5_CPANPLUS_IS_EXECUTING';
212 use constant DEFAULT_EMAIL => 'cpanplus@example.com';
213 use constant CPANPLUS_UA => sub { ### for the version number ###
214 require CPANPLUS::Internals;
215 "CPANPLUS/$CPANPLUS::Internals::VERSION"
217 use constant TESTERS_URL => sub {
218 "http://testers.cpan.org/show/" .
221 use constant TESTERS_DETAILS_URL
223 'http://testers.cpan.org/show/' .
227 use constant CREATE_FILE_URI
229 my $dir = $_[0] or return;
235 use constant DOT_SHELL_DEFAULT_RC
236 => '.shell-default.rc';
238 use constant PREREQ_IGNORE => 0;
239 use constant PREREQ_INSTALL => 1;
240 use constant PREREQ_ASK => 2;
241 use constant PREREQ_BUILD => 3;
242 use constant BOOLEANS => [0,1];
243 use constant CALLING_FUNCTION
244 => sub { my $lvl = $_[0] || 0;
245 return join '::', (caller(2+$lvl))[3]
247 use constant PERL_CORE => 'perl';
249 use constant GET_XS_FILES => sub { my $dir = $_[0] or return;
253 sub { push @files, $File::Find::name
254 if $File::Find::name =~ /\.xs$/i
260 use constant INSTALL_LOG_FILE
261 => sub { my $obj = shift or return;
262 my $name = $obj->name; $name =~ s/::/-/g;
263 $name .= '-'. $obj->version;
264 $name .= '-'. scalar(time) . '.log';
268 use constant ON_WIN32 => $^O eq 'MSWin32';
269 use constant ON_NETWARE => $^O eq 'NetWare';
270 use constant ON_CYGWIN => $^O eq 'cygwin';
271 use constant ON_VMS => $^O eq 'VMS';
273 use constant ON_OLD_CYGWIN => do { ON_CYGWIN and $] < 5.008
275 "Your perl version for %1 is too low; ".
276 "Require %2 or higher for this function",
281 ### XXX these 2 are probably obsolete -- check & remove;
282 use constant DOT_EXISTS => '.exists';
284 use constant QUOTE_PERL_ONE_LINER
285 => sub { my $line = shift or return;
287 ### use double quotes on these systems
289 if ON_WIN32 || ON_NETWARE || ON_VMS;
291 ### single quotes on the rest
298 # c-indentation-style: bsd
300 # indent-tabs-mode: nil
302 # vim: expandtab shiftwidth=4: