PGXN-API
view release on metacpan or search on metacpan
lib/PGXN/API.pm view on Meta::CPAN
my $templates = $pgxn->uri_templates;
Returns a hash reference of the URI templates for the various files stored in
the API document root. The keys are the names of the templates, and the values
are L<URI::Template> objects. Includes the additional URI templates added by
L<PGXN::API::Indexer/update_mirror_meta>.
=cut
has uri_templates => (is => 'ro', isa => 'HashRef', lazy => 1, default => sub {
my $self = shift;
my $tmpl = $self->read_json_from(
catfile $self->doc_root, 'index.json'
);
return { map { $_ => URI::Template->new($tmpl->{$_}) } keys %{ $tmpl } };
});
=head3 C<doc_root>
my $doc_root = $pgxn->doc_root;
lib/PGXN/API/Indexer.pm view on Meta::CPAN
use Lucy::Analysis::PolyAnalyzer;
use Lucy::Analysis::RegexTokenizer;
use Lucy::Index::Indexer;
use Try::Tiny;
use Archive::Zip qw(AZ_OK);
use namespace::autoclean;
our $VERSION = v0.20.2;
has verbose => (is => 'rw', isa => 'Int', default => 0);
has _index_it => (is => 'rw', isa => 'Bool', default => 1);
has to_index => (is => 'ro', isa => 'HashRef', default => sub { +{
map { $_ => [] } qw(docs dists extensions users tags)
} });
has _user_names => (is => 'ro', isa => 'HashRef', default => sub { +{ } });
has libxml => (is => 'ro', isa => 'XML::LibXML', lazy => 1, default => sub {
XML::LibXML->new(
recover => 2,
no_network => 1,
no_blanks => 1,
no_cdata => 1,
);
});
has index_dir => (is => 'ro', isa => 'Str', lazy => 1, default => sub {
my $dir = catdir +PGXN::API->instance->doc_root, '_index';
if (!-e $dir) {
require File::Path;
File::Path::make_path($dir);
}
$dir;
});
has schemas => ( is => 'ro', isa => 'HashRef', lazy => 1, default => sub {
my $polyanalyzer = Lucy::Analysis::PolyAnalyzer->new(
language => 'en',
);
my $fti = Lucy::Plan::FullTextType->new(
analyzer => $polyanalyzer,
highlightable => 0,
);
my $ftih = Lucy::Plan::FullTextType->new(
lib/PGXN/API/Sync.pm view on Meta::CPAN
my $exe = $_;
first { -f $_ && -x _ } $exe, map { catfile $_, $exe } path;
};
has rsync_path => (is => 'rw', isa => 'Executable', default => 'rsync', required => 1);
has source => (is => 'rw', isa => 'Str', required => 1);
has verbose => (is => 'rw', isa => 'Int', default => 0);
has log_file => (is => 'rw', isa => 'Str', required => 1, default => sub {
catfile tmpdir, "pgxn-api-sync-$$.txt"
});
has mirror_uri_templates => (is => 'ro', isa => 'HashRef', lazy => 1, default => sub {
my $self = shift;
my $api = PGXN::API->instance;
my $tmpl = $api->read_json_from(catfile $api->mirror_root, 'index.json');
return { map { $_ => URI::Template->new($tmpl->{$_}) } keys %{ $tmpl } };
});
sub run {
my $self = shift;
$self->run_rsync;
$self->update_index;
( run in 0.804 second using v1.01-cache-2.11-cpan-5f2e87ce722 )