#!/usr/bin/perl use strict; use warnings; use JSON qw{ from_json }; use YAML qw{ Load }; # slurp the file my $path = <>; chomp($path); open my $fh, '<', $path or die "can't open $path: $!"; my $data = do { local $/; <$fh> }; close $fh; # parse meta - either yaml or json my $meta = $path =~ /\.yml$/ ? Load( $data ) : from_json( $data ); # dump the recommends with their version my $recommends = $meta->{"meta-spec"}{version} >= 2 ? $meta->{prereqs}{runtime}{recommends} : $meta->{recommends}; foreach my $module ( sort keys %$recommends ) { next if $module eq 'perl'; # minimum perl version my $version = $recommends->{$module}; if ( $version == 0 ) { print "perl($module)\n"; } else { my $v = qx{ rpm --eval '%perl_convert_version $version' }; print "perl($module) >= $v"; } } exit; =head1 NAME perl.recommends-from-meta - extract recommends from meta file =head1 SYNOPSIS $ perl.recommends-from-meta /path/to/META.yml $ perl.recommends-from-meta /path/to/META.json =head1 DESCRIPTION This script will extract Perl recommends from the distribution meta file. For each such recommends, it'll convert the minimum version to follow Mageia perl versioning (using C<%perl_convert_version>), and print them as: perl(Foo::Bar) perl(App::Frobnizer) >= 1.23.456 Minimum perl version are skipped.