Skip to content

Commit

Permalink
Support projects1.json for S22 and downgrade for projects.json
Browse files Browse the repository at this point in the history
projects1.json will contain META data as is while projects.json will
contain data downgraded to the unspecified meta-version 0 for older
tools.
  • Loading branch information
niner committed Apr 22, 2018
1 parent 45aae93 commit 503a599
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion server/updatelist.pl
Expand Up @@ -54,7 +54,7 @@
}
close $fh;

for my $basename ('projects.json', 'list') {
for my $basename ('projects1.json', 'list') {
File::AtomicWrite->write_file({
file => File::Spec->catfile($OUTDIR, $basename),
input => \encode_json(\@modules),
Expand All @@ -66,6 +66,12 @@
input => \JSON::MaybeXS->new->pretty(1)->encode(\@errors),
mode => 0644,
});
downgrade(\@modules);
File::AtomicWrite->write_file({
file => File::Spec->catfile($OUTDIR, 'projects.json'),
input => \encode_json(\@modules),
mode => 0644,
});

sub _normalize_module {
my $module = shift;
Expand All @@ -87,3 +93,38 @@ sub _normalize_source_url {
s{/$}{.git} if m{^https?://};
}
}

sub downgrade {
my ($modules) = @_;

foreach my $meta (grep { exists $_->{'meta-version'} and 0 < $_->{'meta-version'} } @$modules) {
if (exists $meta->{depends} and ref $meta->{depends} eq 'HASH') {
my $depends = $meta->{depends};
delete $meta->{depends};
$meta->{depends} = $depends->{runtime}{requires}
if exists $depends->{runtime} and exists $depends->{runtime}{requires};
$meta->{'build-depends'} = $depends->{build}{requires}
if exists $depends->{build} and exists $depends->{build}{requires};
$meta->{'test-depends'} = $depends->{test}{requires}
if exists $depends->{test} and exists $depends->{test}{requires};
}
foreach (qw(depends build-depends test-depends)) {
$meta->{$_} = grep {
$_ !~ /:from/
}
map {
(ref $_ and ref $_ eq 'HASH') ? $_->{name} : $_
}
grep {
defined $_
}
$meta->{$_}
if exists $meta->{$_};
}

if (exists $meta->{builder}) {
$meta->{'build-depends'} //= [];
push @{ $meta->{'build-depends'} }, "Distribution::Builder::$meta->{builder}";
}
}
}

0 comments on commit 503a599

Please sign in to comment.