App-Info
view release on metacpan or search on metacpan
lib/App/Info/Lib/OSSPUUID.pm view on Meta::CPAN
use vars qw(@ISA $VERSION);
@ISA = qw(App::Info::Lib);
$VERSION = '0.57';
use constant WIN32 => $^O eq 'MSWin32';
my $u = App::Info::Util->new;
##############################################################################
=head1 INTERFACE
=head2 Constructor
=head3 new
my $expat = App::Info::Lib::OSSPUUID->new(@params);
Returns an App::Info::Lib::OSSPUUID object. See L<App::Info|App::Info> for a
complete description of argument parameters.
When called, C<new()> searches all of the paths returned by the
C<search_lib_dirs()> method for one of the files returned by the
C<search_lib_names()> method. If any of is found, then the OSSP UUID library
is assumed to be installed. Otherwise, most of the object methods will return
C<undef>.
B<Events:>
=over 4
=item info
Looking for uuid-config
=item confirm
Path to uuid-config?
=item unknown
Path to uuid-config?
=back
=cut
sub new {
# Construct the object.
my $self = shift->SUPER::new(@_);
# Find uuid-config.
$self->info("Looking for uuid-config");
my @paths = $self->search_bin_dirs;
my @exes = $self->search_exe_names;
if (my $cfg = $u->first_cat_exe(\@exes, @paths)) {
# We found it. Confirm.
$self->{uuid_config} = $self->confirm(
key => 'path to uuid-config',
prompt => "Path to uuid-config?",
value => $cfg,
callback => sub { -x },
error => 'Not an executable'
);
} else {
# Handle an unknown value.
$self->{uuid_config} = $self->unknown(
key => 'path to uuid-config',
prompt => "Path to uuid-config?",
callback => sub { -x },
error => 'Not an executable'
);
}
# Set up search defaults.
if (exists $self->{search_uuid_names}) {
$self->{search_uuid_names} = [$self->{search_uuid_names}]
unless ref $self->{search_uuid_names} eq 'ARRAY';
} else {
$self->{search_uuid_names} = [];
}
return $self;
}
# We'll use this code reference as a common way of collecting data.
my $get_data = sub {
return unless $_[0]->{uuid_config};
$_[0]->info(qq{Executing `"$_[0]->{uuid_config}" $_[1]`});
my $info = `"$_[0]->{uuid_config}" $_[1]`;
chomp $info;
return $info;
};
##############################################################################
=head2 Class Method
=head3 key_name
my $key_name = App::Info::Lib::OSSPUUID->key_name;
Returns the unique key name that describes this class. The value returned is
the string "OSSP UUID".
=cut
sub key_name { 'OSSP UUID' }
##############################################################################
=head2 Object Methods
=head3 installed
print "UUID is ", ($uuid->installed ? '' : 'not '), "installed.\n";
Returns true if the OSSP UUID library is installed, and false if it is not.
App::Info::Lib::OSSPUUID determines whether the library is installed based on
the presence or absence on the file system of the C<uuid-config> application,
searched for when C<new()> constructed the object. If the OSSP UUID library
does not appear to be installed, then most of the other object methods will
return empty values.
=cut
sub installed { $_[0]->{uuid_config} ? 1 : undef }
lib/App/Info/Lib/OSSPUUID.pm view on Meta::CPAN
# Load data.
$get_version->($self) unless exists $self->{'--version'};
# Handle an unknown value.
$self->{patch} = $self->unknown(
key => 'OSSP UUID patch version number',
callback => $is_int
) unless defined $self->{patch};
return $self->{patch};
}
##############################################################################
=head3 executable
my $exe = $uuid->executable;
Returns the full path to the OSSP UUID executable, which is named F<uuid>.
This method does not use the executable names returned by
C<search_exe_names()>; those executable names are used to search for
F<uuid-config> only (in C<new()>).
When it called, C<executable()> checks for an executable named F<uuid> in the
directory returned by C<bin_dir()>.
Note that C<executable()> is simply an alias for C<uuid()>.
B<Events:>
=over 4
=item info
Looking for uuid executable
=item confirm
Path to uuid executable?
=item unknown
Path to uuid executable?
=back
=cut
sub executable {
my $self = shift;
my $key = 'uuid';
# Find executable.
$self->info("Looking for $key");
unless ($self->{$key}) {
my $bin = $self->bin_dir or return;
if (my $exe = $u->first_cat_exe([$self->search_uuid_names], $bin)) {
# We found it. Confirm.
$self->{$key} = $self->confirm(
key => "path to $key",
prompt => "Path to $key executable?",
value => $exe,
callback => sub { -x },
error => 'Not an executable'
);
} else {
# Handle an unknown value.
$self->{$key} = $self->unknown(
key => "path to $key",
prompt => "Path to $key executable?",
callback => sub { -x },
error => 'Not an executable'
);
}
}
return $self->{$key};
};
*uuid = \&executable;
##############################################################################
=head3 bin_dir
my $bin_dir = $uuid->bin_dir;
Returns the OSSP UUID binary directory path. App::Info::Lib::OSSPUUID gathers
the path from the system call C<`uuid-config --bindir`>.
B<Events:>
=over 4
=item info
Executing `uuid-config --bindir`
=item error
Cannot find bin directory
=item unknown
Enter a valid OSSP UUID bin directory
=back
=cut
# This code reference is used by bin_dir(), lib_dir(), and so_lib_dir() to
# validate a directory entered by the user.
my $is_dir = sub { -d };
sub bin_dir {
my $self = shift;
return unless $self->{uuid_config};
unless (exists $self->{bin_dir} ) {
if (my $dir = $get_data->($self, '--bindir')) {
$self->{bin_dir} = $dir;
} else {
# Handle an unknown value.
$self->error("Cannot find bin directory");
$self->{bin_dir} = $self->unknown(
key => 'OSSP UUID bin dir',
callback => $is_dir
);
}
}
lib/App/Info/Lib/OSSPUUID.pm view on Meta::CPAN
B<Events:>
=over 4
=item info
Executing `uuid-config --libdir`
=item error
Cannot find library directory
=item unknown
Enter a valid OSSP UUID library directory
=back
=cut
*so_lib_dir = \&lib_dir;
##############################################################################
=head3 cflags
my $configure = $uuid->cflags;
Returns the C flags used when compiling the OSSP UUID library.
App::Info::Lib::OSSPUUID gathers the configure data from the system call
C<`uuid-config --cflags`>.
B<Events:>
=over 4
=item info
Executing `uuid-config --configure`
=item error
Cannot find configure information
=item unknown
Enter OSSP UUID configuration options
=back
=cut
sub cflags {
my $self = shift;
return unless $self->{uuid_config};
unless (exists $self->{cflags} ) {
if (my $conf = $get_data->($self, '--cflags')) {
$self->{cflags} = $conf;
} else {
# Cflags can be empty, so just make sure it exists and is
# defined. Don't prompt.
$self->{cflags} = '';
}
}
return $self->{cflags};
}
##############################################################################
=head3 ldflags
my $configure = $uuid->ldflags;
Returns the LD flags used when compiling the OSSP UUID library.
App::Info::Lib::OSSPUUID gathers the configure data from the system call
C<`uuid-config --ldflags`>.
B<Events:>
=over 4
=item info
Executing `uuid-config --configure`
=item error
Cannot find configure information
=item unknown
Enter OSSP UUID configuration options
=back
=cut
sub ldflags {
my $self = shift;
return unless $self->{uuid_config};
unless (exists $self->{ldflags} ) {
if (my $conf = $get_data->($self, '--ldflags')) {
$self->{ldflags} = $conf;
} else {
# Ldflags can be empty, so just make sure it exists and is
# defined. Don't prompt.
$self->{ldflags} = '';
}
}
return $self->{ldflags};
}
##############################################################################
=head3 perl_module
my $bool = $uuid->perl_module;
Return true if C<OSSP::uuid> is installed and can be loaded, and false if not.
C<OSSP::uuid> must be able to be loaded by the currently running instance of
the Perl interpreter.
B<Events:>
=over 4
=item info
Loading OSSP::uuid
=back
=cut
sub perl_module {
my $self = shift;
$self->info('Loading OSSP::uuuid');
$self->{perl_module} ||= do {
eval 'use OSSP::uuid';
$INC{catfile qw(OSSP uuid.pm)};
};
return $self->{perl_module};
}
##############################################################################
=head3 home_url
my $home_url = $uuid->home_url;
Returns the OSSP UUID home page URL.
=cut
sub home_url { 'http://www.ossp.org/pkg/lib/uuid/' }
##############################################################################
=head3 download_url
my $download_url = $uuid->download_url;
Returns the OSSP UUID download URL.
=cut
( run in 1.179 second using v1.01-cache-2.11-cpan-6aa56a78535 )