Initial Commit
This commit is contained in:
298
database/perl/vendor/lib/Test/File/ShareDir/Object/Dist.pm
vendored
Normal file
298
database/perl/vendor/lib/Test/File/ShareDir/Object/Dist.pm
vendored
Normal file
@@ -0,0 +1,298 @@
|
||||
use 5.006; # pragmas
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package Test::File::ShareDir::Object::Dist;
|
||||
|
||||
our $VERSION = '1.001002';
|
||||
|
||||
# ABSTRACT: Object Oriented ShareDir creation for distributions
|
||||
|
||||
our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use Class::Tiny {
|
||||
inc => sub {
|
||||
require Test::File::ShareDir::Object::Inc;
|
||||
return Test::File::ShareDir::Object::Inc->new();
|
||||
},
|
||||
dists => sub {
|
||||
return {};
|
||||
},
|
||||
root => sub {
|
||||
require Path::Tiny;
|
||||
return Path::Tiny::path(q[./])->absolute;
|
||||
},
|
||||
};
|
||||
|
||||
use Carp qw( carp );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub __rcopy { require File::Copy::Recursive; goto \&File::Copy::Recursive::rcopy; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub dist_names {
|
||||
my ($self) = @_;
|
||||
return keys %{ $self->dists };
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub dist_share_target_dir {
|
||||
my ( $self, $distname ) = @_;
|
||||
return $self->inc->dist_tempdir->child($distname);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub dist_share_source_dir {
|
||||
my ( $self, $distname ) = @_;
|
||||
require Path::Tiny;
|
||||
return Path::Tiny::path( $self->dists->{$distname} )->absolute( $self->root );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub install_dist {
|
||||
my ( $self, $distname ) = @_;
|
||||
my $source = $self->dist_share_source_dir($distname);
|
||||
my $target = $self->dist_share_target_dir($distname);
|
||||
return __rcopy( $source, $target );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub install_all_dists {
|
||||
my ($self) = @_;
|
||||
for my $dist ( $self->dist_names ) {
|
||||
$self->install_dist($dist);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub add_to_inc {
|
||||
my ($self) = @_;
|
||||
carp 'add_to_inc deprecated since 1.001000, use register';
|
||||
return $self->register;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub register {
|
||||
my ($self) = @_;
|
||||
$self->inc->register;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub clear {
|
||||
my ($self) = @_;
|
||||
$self->inc->clear;
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test::File::ShareDir::Object::Dist - Object Oriented ShareDir creation for distributions
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 1.001002
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test::File::ShareDir::Object::Dist;
|
||||
|
||||
my $dir = Test::File::ShareDir::Object::Dist->new(
|
||||
root => "some/path",
|
||||
dists => {
|
||||
"Hello-Nurse" => "share/HN"
|
||||
},
|
||||
);
|
||||
|
||||
$dir->install_all_dists;
|
||||
$dir->add_to_inc;
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 C<dist_names>
|
||||
|
||||
my @names = $instance->dist_names();
|
||||
|
||||
Returns the names of all distributions listed in the C<dists> set.
|
||||
|
||||
=head2 C<dist_share_target_dir>
|
||||
|
||||
my $dir = $instance->dist_share_target_dir("Dist-Name");
|
||||
|
||||
Returns the path where the C<ShareDir> will be created for C<Dist-Name>
|
||||
|
||||
=head2 C<dist_share_source_dir>
|
||||
|
||||
my $dir = $instance->dist_share_source_dir("Dist-Name");
|
||||
|
||||
Returns the path where the C<ShareDir> will be B<COPIED> I<FROM> for C<Dist-Name>
|
||||
|
||||
=head2 C<install_dist>
|
||||
|
||||
$instance->install_dist("Dist-Name");
|
||||
|
||||
Installs C<Dist-Name>'s C<ShareDir>
|
||||
|
||||
=head2 C<install_all_dists>
|
||||
|
||||
$instance->install_all_dists();
|
||||
|
||||
Installs all C<dist_names>
|
||||
|
||||
=head2 C<add_to_inc>
|
||||
|
||||
B<DEPRECATED:> Use C<register> instead.
|
||||
|
||||
=head2 C<register>
|
||||
|
||||
$instance->register();
|
||||
|
||||
Adds the C<Tempdir> C<ShareDir> ( C<inc> ) to the global C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head2 C<clear>
|
||||
|
||||
$instance->clear();
|
||||
|
||||
Removes the C<Tempdir> C<ShareDir> ( C<inc> ) from the global C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head1 ATTRIBUTES
|
||||
|
||||
=head2 C<inc>
|
||||
|
||||
A C<Test::File::ShareDir::Object::Inc> object.
|
||||
|
||||
=head2 C<dists>
|
||||
|
||||
A hash of :
|
||||
|
||||
Dist-Name => "relative/path"
|
||||
|
||||
=head2 C<root>
|
||||
|
||||
The origin all paths's are relative to.
|
||||
|
||||
( Defaults to C<cwd> )
|
||||
|
||||
=begin MetaPOD::JSON v1.1.0
|
||||
|
||||
{
|
||||
"namespace":"Test::File::ShareDir::Object::Dist",
|
||||
"interface":"class",
|
||||
"inherits":"Class::Tiny::Object"
|
||||
}
|
||||
|
||||
|
||||
=end MetaPOD::JSON
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kent Fredric <kentnl@cpan.org>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
209
database/perl/vendor/lib/Test/File/ShareDir/Object/Inc.pm
vendored
Normal file
209
database/perl/vendor/lib/Test/File/ShareDir/Object/Inc.pm
vendored
Normal file
@@ -0,0 +1,209 @@
|
||||
use 5.006; # pragmas
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package Test::File::ShareDir::Object::Inc;
|
||||
|
||||
our $VERSION = '1.001002';
|
||||
|
||||
# ABSTRACT: Shared tempdir object code to inject into @INC
|
||||
|
||||
our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
my @cache;
|
||||
|
||||
use Class::Tiny {
|
||||
tempdir => sub {
|
||||
require Path::Tiny;
|
||||
my $dir = Path::Tiny::tempdir( CLEANUP => 1 );
|
||||
push @cache, $dir; # explicit keepalive
|
||||
return $dir;
|
||||
},
|
||||
module_tempdir => sub {
|
||||
my ($self) = @_;
|
||||
my $dir = $self->tempdir->child('auto/share/module');
|
||||
$dir->mkpath();
|
||||
return $dir->absolute;
|
||||
},
|
||||
dist_tempdir => sub {
|
||||
my ($self) = @_;
|
||||
my $dir = $self->tempdir->child('auto/share/dist');
|
||||
$dir->mkpath();
|
||||
return $dir->absolute;
|
||||
},
|
||||
};
|
||||
use Carp qw( carp );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub add_to_inc {
|
||||
my ($self) = @_;
|
||||
carp 'add_to_inc deprecated sice 1.001000, use register instead';
|
||||
return $self->register;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub register {
|
||||
my ($self) = @_;
|
||||
unshift @INC, $self->tempdir->stringify;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub clear {
|
||||
my ($self) = @_;
|
||||
## no critic (Variables::RequireLocalizedPunctuationVars)
|
||||
@INC = grep { ref or $_ ne $self->tempdir->stringify } @INC;
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test::File::ShareDir::Object::Inc - Shared tempdir object code to inject into @INC
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 1.001002
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test::File::ShareDir::Object::Inc;
|
||||
|
||||
my $inc = Test::File::ShareDir::Object::Inc->new();
|
||||
|
||||
$inc->tempdir() # add files to here
|
||||
|
||||
$inc->module_tempdir() # or here
|
||||
|
||||
$inc->dist_tempdir() # or here
|
||||
|
||||
$inc->add_to_inc;
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This class doesn't do very much on its own.
|
||||
|
||||
It simply exists to facilitate C<tempdir> creation,
|
||||
and the injection of those C<tempdir>'s into C<@INC>
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 C<add_to_inc>
|
||||
|
||||
B<DEPRECATED:> Use C<register> instead.
|
||||
|
||||
=head2 C<register>
|
||||
|
||||
$instance->register;
|
||||
|
||||
Allows this C<Inc> to be used.
|
||||
|
||||
Presently, this injects the associated C<tempdir> into C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head2 C<clear>
|
||||
|
||||
$instance->clear();
|
||||
|
||||
Prevents this C<Inc> from being used.
|
||||
|
||||
Presently, this removes the C<tempdir> from C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head1 ATTRIBUTES
|
||||
|
||||
=head2 C<tempdir>
|
||||
|
||||
A path to a C<tempdir> of some description.
|
||||
|
||||
=head2 C<module_tempdir>
|
||||
|
||||
The C<module> C<ShareDir> base directory within the C<tempdir>
|
||||
|
||||
=head2 C<dist_tempdir>
|
||||
|
||||
The C<dist> C<ShareDir> base directory within the C<tempdir>
|
||||
|
||||
=begin MetaPOD::JSON v1.1.0
|
||||
|
||||
{
|
||||
"namespace":"Test::File::ShareDir::Object::Inc",
|
||||
"interface":"class",
|
||||
"inherits":"Class::Tiny::Object"
|
||||
}
|
||||
|
||||
|
||||
=end MetaPOD::JSON
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kent Fredric <kentnl@cpan.org>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
301
database/perl/vendor/lib/Test/File/ShareDir/Object/Module.pm
vendored
Normal file
301
database/perl/vendor/lib/Test/File/ShareDir/Object/Module.pm
vendored
Normal file
@@ -0,0 +1,301 @@
|
||||
use 5.006; # pragmas
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
package Test::File::ShareDir::Object::Module;
|
||||
|
||||
our $VERSION = '1.001002';
|
||||
|
||||
# ABSTRACT: Object Oriented ShareDir creation for modules
|
||||
|
||||
our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
use Class::Tiny {
|
||||
inc => sub {
|
||||
require Test::File::ShareDir::Object::Inc;
|
||||
return Test::File::ShareDir::Object::Inc->new();
|
||||
},
|
||||
modules => sub {
|
||||
return {};
|
||||
},
|
||||
root => sub {
|
||||
require Path::Tiny;
|
||||
return Path::Tiny::path(q[./])->absolute;
|
||||
},
|
||||
};
|
||||
|
||||
use Carp qw( carp );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub __rcopy { require File::Copy::Recursive; goto \&File::Copy::Recursive::rcopy; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub module_names {
|
||||
my ( $self, ) = @_;
|
||||
return keys %{ $self->modules };
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub module_share_target_dir {
|
||||
my ( $self, $module ) = @_;
|
||||
|
||||
$module =~ s/::/-/msxg;
|
||||
|
||||
return $self->inc->module_tempdir->child($module);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub module_share_source_dir {
|
||||
my ( $self, $module ) = @_;
|
||||
require Path::Tiny;
|
||||
return Path::Tiny::path( $self->modules->{$module} )->absolute( $self->root );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub install_module {
|
||||
my ( $self, $module ) = @_;
|
||||
my $source = $self->module_share_source_dir($module);
|
||||
my $target = $self->module_share_target_dir($module);
|
||||
return __rcopy( $source, $target );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub install_all_modules {
|
||||
my ($self) = @_;
|
||||
for my $module ( $self->module_names ) {
|
||||
$self->install_module($module);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub add_to_inc {
|
||||
my ($self) = @_;
|
||||
carp 'add_to_inc deprecated since 1.001000, use register';
|
||||
return $self->register;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub register {
|
||||
my ($self) = @_;
|
||||
$self->inc->register;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
sub clear {
|
||||
my ($self) = @_;
|
||||
$self->inc->clear;
|
||||
return;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Test::File::ShareDir::Object::Module - Object Oriented ShareDir creation for modules
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 1.001002
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Test::File::ShareDir::Object::Module;
|
||||
|
||||
my $dir = Test::File::ShareDir::Object::Module->new(
|
||||
root => "some/path",
|
||||
modules => {
|
||||
"Hello::Nurse" => "share/HN"
|
||||
},
|
||||
);
|
||||
|
||||
$dir->install_all_modules;
|
||||
$dir->add_to_inc;
|
||||
|
||||
=head1 METHODS
|
||||
|
||||
=head2 C<module_names>
|
||||
|
||||
my @names = $instance->module_names();
|
||||
|
||||
Returns the names of all modules listed in the C<modules> set.
|
||||
|
||||
=head2 C<module_share_target_dir>
|
||||
|
||||
my $dir = $instance->module_share_target_dir("Module::Name");
|
||||
|
||||
Returns the path where the C<ShareDir> will be created for C<Module::Name>
|
||||
|
||||
=head2 C<module_share_source_dir>
|
||||
|
||||
my $dir = $instance->module_share_source_dir("Module::Name");
|
||||
|
||||
Returns the path where the C<ShareDir> will be B<COPIED> I<FROM> for C<Module::Name>
|
||||
|
||||
=head2 C<install_module>
|
||||
|
||||
$instance->install_module("Module::Name");
|
||||
|
||||
Installs C<Module::Name>'s C<ShareDir>
|
||||
|
||||
=head2 C<install_all_modules>
|
||||
|
||||
$instance->install_all_modules();
|
||||
|
||||
Installs all C<module_names>.
|
||||
|
||||
=head2 C<add_to_inc>
|
||||
|
||||
B<DEPRECATED:> Use C<register> instead.
|
||||
|
||||
=head2 C<register>
|
||||
|
||||
$instance->register();
|
||||
|
||||
Adds the C<Tempdir> C<ShareDir> ( C<inc> ) to the global C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head2 C<clear>
|
||||
|
||||
$instance->clear();
|
||||
|
||||
Removes the C<Tempdir> C<ShareDir> ( C<inc> ) from the global C<@INC>
|
||||
|
||||
I<Since 1.001000>
|
||||
|
||||
=head1 ATTRIBUTES
|
||||
|
||||
=head2 C<inc>
|
||||
|
||||
A C<Test::File::ShareDir::Object::Inc> object.
|
||||
|
||||
=head2 C<modules>
|
||||
|
||||
A hash of :
|
||||
|
||||
Module::Name => "relative/path"
|
||||
|
||||
=head2 C<root>
|
||||
|
||||
The origin all paths's are relative to.
|
||||
|
||||
( Defaults to C<cwd> )
|
||||
|
||||
=begin MetaPOD::JSON v1.1.0
|
||||
|
||||
{
|
||||
"namespace":"Test::File::ShareDir::Object::Module",
|
||||
"interface":"class",
|
||||
"inherits":"Class::Tiny::Object"
|
||||
}
|
||||
|
||||
|
||||
=end MetaPOD::JSON
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kent Fredric <kentnl@cpan.org>
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user