File: Metacpan.pm

package info (click to toggle)
devscripts 2.25.30
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 9,504 kB
  • sloc: perl: 27,293; sh: 12,873; python: 4,466; makefile: 382
file content (61 lines) | stat: -rw-r--r-- 1,740 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package Devscripts::Uscan::Modes::Metacpan;

use strict;
use Devscripts::Uscan::Output;
use Devscripts::Uscan::Utils;
use Devscripts::Uscan::Modes::_xtp;
use Moo::Role;

BEGIN {
    eval 'use MetaCPAN::Client';
    if ($@) {
        die "You must install libmetacpan-client-perl";
    }
}

sub metacpan_search {
    my ($self) = @_;
    uscan_verbose "Searching versions of $self->{parse_result}->{base}";
    my $mcpan    = MetaCPAN::Client->new;
    my $releases = $mcpan->release({
            all => [{
                    distribution => $self->{parse_result}->{base} }
            ],
            fields => [qw(version download_url)] });

    my (@files);
    while (my $release = $releases->next) {
        my $mangled_version = $release->version;
        my $file            = $release->download_url;
        if (
            mangle(
                $self->watchfile,            'uversionmangle:',
                \@{ $self->uversionmangle }, \$mangled_version
            )
        ) {
            return undef;
        }
        my $match = '';
        if (defined $self->shared->{download_version}
            and not $self->versionmode eq 'ignore') {
            if ($mangled_version eq $self->shared->{download_version}) {
                $match = "matched with the download version";
            }
        }
        my $priority = $mangled_version . '-' . get_priority($file);
        push @files,
          [$priority, $mangled_version, $file, $match, $release->version];
    }
    return sortAndMangle($self, @files);
}

sub metacpan_upstream_url {
    my ($self) = @_;
    return $self->search_result->{newfile};
}

*metacpan_newfile_base = \&Devscripts::Uscan::Modes::_xtp::_xtp_newfile_base;

sub metacpan_clean { 0 }

1;