Acme-CPANAuthors-InMostCPANAuthors

 view release on metacpan or  search on metacpan

devscript/update-data  view on Meta::CPAN

#!/usr/bin/env perl

use 5.010001;
use strict;
use warnings;
use Log::ger;

use IPC::System::Options 'system', -log=>1, -die=>1;
use List::Util qw(uniq);

our %SPEC;

my @skiplist = (
    'You::re_using',
    'EU', # alias
    'CPAN::Streaks::DailyDistributions',
    'CPAN::Streaks::DailyNewDistributions',
    'CPAN::Streaks::DailyReleases',

devscript/update-data  view on Meta::CPAN

                U => {is_flag=>1, summary=>'Shortcut for --no-update-modules', code=>sub {$_[0]{update_modules} = 0}},
            },
        },
    },
};
sub app {
    my %args = @_;

  UPDATE_MODULES: {
        last unless $args{update_modules} // 1;
        log_info "Installing/updating all Acme::CPANAuthors::* modules ...";
        system "lcpan mods --namespace Acme::CPANAuthors | lcpanm -n";
    } # UPDATE_MODULES

    my %all_authors; # key=ac_mod, val=\@authors
  LIST_AUTHORS: {
        log_info "Listing all authors from all lists ...";

        require Module::List;
        my $res = Module::List::list_modules("Acme::CPANAuthors::", {list_modules=>1, recurse=>1});
        my @modules = sort keys %$res;

        require Acme::CPANAuthors;
      MOD:
        for my $mod (@modules) {
            log_debug "Processing module $mod ...";
            (my $ac_mod = $mod) =~ s/^Acme::CPANAuthors:://;
            if (grep { $_ eq $ac_mod } @skiplist) {
                log_info "Skipped list $ac_mod";
                next MOD;
            }
            my @authors;
            eval { (my $mod_pm = "$mod.pm") =~ s!::!/!g; require $mod_pm; my %authors = $mod->authors; @authors = sort keys %authors };
            if ($@) {
                log_warn "Can't extract authors from list $ac_mod: $@, skipped";
                next MOD;
            }
            $all_authors{$ac_mod} = \@authors;
        }
    } # LIST_AUTHORS

    my %author_lists; # key=author, val=[list1, ...]
  COUNT: {
        for my $ac_mod (sort keys %all_authors) {
            for my $author (uniq sort @{ $all_authors{$ac_mod} }) {

devscript/update-data  view on Meta::CPAN

        }
    } # RANK


    [200, "OK", \@res, {'table.fields'=>[qw/author num_lists lists/]}];
}

use Perinci::CmdLine::Any;
Perinci::CmdLine::Any->new(
    url => '/main/app',
    log => 1,
)->run;



( run in 0.888 second using v1.01-cache-2.11-cpan-49f99fa48dc )