package JIB::Constants; use strict; use Package::Constants; use File::Spec; use Log::Message::Simple qw[:STD]; use vars qw[@EXPORT]; use base 'Exporter'; @EXPORT = Package::Constants->list( __PACKAGE__ ); sub constants { @EXPORT }; use constant IS_CODEREF => sub { ref $_[-1] eq 'CODE' }; use constant IS_FILE => sub { return 1 if -e $_[-1] }; use constant FILE_EXISTS => sub { my $file = $_[-1]; return 1 if IS_FILE->($file); local $Carp::CarpLevel = $Carp::CarpLevel+2; error(qq[File '$file' does not exist]); return; }; use constant FILE_READABLE => sub { my $file = $_[-1]; return 1 if -e $file && -r _; local $Carp::CarpLevel = $Carp::CarpLevel+2; error(qq[File '$file' is not readable ]. q[or does not exist]); return; }; use constant IS_DIR => sub { return 1 if -d $_[-1] }; use constant DIR_EXISTS => sub { my $dir = $_[-1]; return 1 if IS_DIR->($dir); local $Carp::CarpLevel = $Carp::CarpLevel+2; error(q[Dir '$dir' does not exist]); return; }; use constant OPEN_FILE => sub { my($file, $mode) = (@_, ''); my $fh; open $fh, "$mode" . $file or error( "Could not open file '$file': $!"); return $fh if $fh; return; }; use constant ISA_JIB_META => sub { UNIVERSAL::isa(shift(), 'JIB::Meta') }; use constant ISA_JIB_CONFIG => sub { UNIVERSAL::isa(shift(), 'JIB::Config') }; use constant ISA_JIB_REPOSITORY => sub { UNIVERSAL::isa(shift(), 'JIB::Repository') }; use constant ISA_JIB_INSTALLATION => sub { UNIVERSAL::isa(shift(), 'JIB::Installation') }; use constant ISA_JIB_REPOSITORY_SET => sub { UNIVERSAL::isa(shift(), 'JIB::Repository::Set') }; use constant ISA_JIB_INSTALLATION_SET => sub { UNIVERSAL::isa(shift(), 'JIB::Installation::Set') }; ### package constants use constant ISA_JIB_PACKAGE => sub { UNIVERSAL::isa(shift(), 'JIB::Package') }; use constant ISA_JIB_PACKAGE_SOURCE => sub { UNIVERSAL::isa(shift(), 'JIB::Package::Source') }; use constant ISA_JIB_PACKAGE_BINARY => sub { UNIVERSAL::isa(shift(), 'JIB::Package::Binary') }; use constant ISA_JIB_PACKAGE_INSTALLED => sub { UNIVERSAL::isa(shift(), 'JIB::Package::Installed')}; use constant ISA_JIB_PACKAGE_INSTALLABLE => sub { UNIVERSAL::isa(shift(), 'JIB::Package::Installable')}; 1; # Local variables: # c-indentation-style: bsd # c-basic-offset: 4 # indent-tabs-mode: nil # End: # vim: expandtab shiftwidth=4: