Skip to content

Commit 06a82b0

Browse files
authored
Merge pull request metacpan#2475 from metacpan/haarg/always-distnameinfo
always provide distnameinfo with release data, and use it in templates
2 parents a566be6 + 78308ce commit 06a82b0

File tree

3 files changed

+28
-21
lines changed

3 files changed

+28
-21
lines changed

lib/MetaCPAN/Web/Model/API/Release.pm

+23-15
Original file line numberDiff line numberDiff line change
@@ -40,20 +40,20 @@ sub coverage {
4040

4141
sub get {
4242
my ( $self, $author, $release ) = @_;
43-
$self->request("/release/$author/$release");
43+
$self->request("/release/$author/$release")->then( \&_with_distnameinfo );
4444
}
4545

4646
sub latest_by_author {
4747
my ( $self, $pauseid ) = @_;
4848
$self->request("/release/latest_by_author/$pauseid")
49-
->then( $self->add_river );
49+
->then( \&_with_distnameinfo )->then( $self->add_river );
5050
}
5151

5252
sub all_by_author {
5353
my ( $self, $pauseid, $page, $page_size ) = @_;
5454
$self->request( "/release/all_by_author/$pauseid",
5555
undef, { page => $page, page_size => $page_size } )
56-
->then( $self->add_river );
56+
->then( \&_with_distnameinfo )->then( $self->add_river );
5757
}
5858

5959
sub recent {
@@ -66,7 +66,7 @@ sub recent {
6666
page_size => $page_size,
6767
type => $type,
6868
}
69-
)->then( $self->add_river );
69+
)->then( \&_with_distnameinfo )->then( $self->add_river );
7070
}
7171

7272
sub modules {
@@ -82,7 +82,8 @@ sub modules {
8282

8383
sub find {
8484
my ( $self, $distribution ) = @_;
85-
$self->request("/release/latest_by_distribution/$distribution");
85+
$self->request("/release/latest_by_distribution/$distribution")
86+
->then( \&_with_distnameinfo );
8687
}
8788

8889
# stolen from Module/requires
@@ -108,7 +109,7 @@ sub reverse_dependencies {
108109
$data->{took} ||= 0;
109110
return $data;
110111
}
111-
)->then( $self->add_river );
112+
)->then( \&_with_distnameinfo )->then( $self->add_river );
112113
}
113114

114115
sub interesting_files {
@@ -118,17 +119,12 @@ sub interesting_files {
118119

119120
sub versions {
120121
my ( $self, $dist ) = @_;
121-
$self->request("/release/versions/$dist")->then( sub {
122+
$self->request("/release/versions/$dist")->then( \&_with_distnameinfo )
123+
->then( sub {
122124
my ($data) = @_;
123-
my $releases = delete $data->{releases};
124-
for my $release (@$releases) {
125-
$release->{distname_version}
126-
= CPAN::DistnameInfo->new( $release->{download_url} )
127-
->version;
128-
}
129-
$data->{versions} = $releases;
125+
$data->{versions} = delete $data->{releases};
130126
Future->done($data);
131-
} );
127+
} );
132128
}
133129

134130
sub topuploaders {
@@ -137,6 +133,18 @@ sub topuploaders {
137133
$self->request( '/release/top_uploaders', undef, $param );
138134
}
139135

136+
sub _with_distnameinfo {
137+
my ($data) = @_;
138+
my $releases
139+
= $data->{releases} ? $data->{releases} : [ $data->{release} || () ];
140+
for my $release (@$releases) {
141+
if ( my $url = $release->{download_url} ) {
142+
$release->{distnameinfo} = CPAN::DistnameInfo->new($url);
143+
}
144+
}
145+
Future->done($data);
146+
}
147+
140148
__PACKAGE__->meta->make_immutable;
141149

142150
1;

root/inc/breadcrumbs.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
selected = release.author == version.author && release.name == version.name ? "selected" : ""; %>
77
<%# FIXME: This link should point to /pod (or /source?) %>
88
<option <% selected %> value="/<% [(module ? 'module' : 'release'), version.author, version.name].join('/'); IF module; "/"; module.path; END %>">
9-
<% version.distname_version _ (version.maturity == 'developer' ? ' DEV' : '') %>
9+
<% version.distnameinfo.version _ (version.maturity == 'developer' ? ' DEV' : '') %>
1010
(<%version.author %> on <% datetime(version.date).to_ymd %>)
1111
<% IF mark_unauthorized_releases && NOT version.authorized %>UNAUTHORIZED<% END %>
1212
</option>

root/inc/release-info.html

+4-5
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@
2727
</li>
2828
<li>
2929
<%
30-
testers_version = release.name.remove('^' _ release.distribution.quotemeta _ '-?');
31-
cpantesters_base = "https://www.cpantesters.org/distro/" _ release.distribution.chunk(1).0.uc _ "/" _ release.distribution _ ".html?oncpan=1&distmat=1&version=" _ (testers_version | uri) %>
32-
<a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=<% release.distribution | uri %>+<% testers_version | uri %>" title="Matrix"><i class="fa fa-fw fa-check-circle black"></i>Testers</a>
30+
cpantesters_base = "https://www.cpantesters.org/distro/" _ release.distribution.chunk(1).0.uc _ "/" _ release.distribution _ ".html?oncpan=1&distmat=1&version=" _ (release.distnameinfo.version | uri) %>
31+
<a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=<% release.distribution | uri %>+<% release.distnameinfo.version | uri %>" title="Matrix"><i class="fa fa-fw fa-check-circle black"></i>Testers</a>
3332
<% IF release.tests.size %><span title="(pass / fail / na)">(<a rel="noopener nofollow" href="<% cpantesters_base %>&amp;grade=2" style="color: #090"><% release.tests.pass %></a> / <a rel="noopener nofollow" href="<% cpantesters_base %>&amp;grade=3" style="color: #900"><% release.tests.fail %></a> / <a rel="noopener nofollow" href="<% cpantesters_base %>&amp;grade=4"><% release.tests.na %></a>)</span><% END %>
3433
</li>
3534
<li>
@@ -65,11 +64,11 @@
6564
backpan.push(version);
6665
NEXT;
6766
END %>
68-
<option value="<% version.author; '/'; version.name; IF module; '/'; module.path; END %>"><% version.distname_version _ (version.maturity == 'developer' ? ' DEV' : '') %> (<% version.author %> on <% datetime(version.date).to_ymd %>)</option>
67+
<option value="<% version.author; '/'; version.name; IF module; '/'; module.path; END %>"><% version.distnameinfo.version _ (version.maturity == 'developer' ? ' DEV' : '') %> (<% version.author %> on <% datetime(version.date).to_ymd %>)</option>
6968
<% END; IF backpan.size %>
7069
<optgroup label="BackPAN"></optgroup>
7170
<% FOREACH version IN backpan %>
72-
<option value="<% version.author; '/'; version.name; IF module; '/'; module.path; END %>"><% version.distname_version _ (version.maturity == 'developer' ? ' DEV' : '') %> (<%version.author %> on <% datetime(version.date).to_ymd %>)
71+
<option value="<% version.author; '/'; version.name; IF module; '/'; module.path; END %>"><% version.distnameinfo.version _ (version.maturity == 'developer' ? ' DEV' : '') %> (<%version.author %> on <% datetime(version.date).to_ymd %>)
7372
</option>
7473
<% END %>
7574
<% END; END %>

0 commit comments

Comments
 (0)