The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use strict;
use warnings;

use lib qw(../lib  lib);
use POE qw(Component::CPAN::SQLite::Info);

die "Usage: $0 MODULE_TO_LOOKUP\n"
    unless @ARGV;

my $Module_Name = shift;

my $poco = POE::Component::CPAN::SQLite::Info->spawn;

POE::Session->create(
    options => { debug => 1, },
    package_states => [
        main => [
            qw(
                _start
                fetched
                info
            ),
        ],
    ],
);

$poe_kernel->run;

sub _start {
    $poco->freshen( {
            event  => 'fetched',
        }
    );
}

sub fetched {
    my ( $kernel, $input ) = @_[ KERNEL, ARG0 ];

    if ( $input->{freshen_error} ) {
        
        # if {freshen_error} says 'fetch' we got an error
        # on the network side.
        # otherwise, it's something with creating dirs for our files.
        if ( $input->{freshen_error} eq 'fetch' ) {
            # since we are fetching 3 files, we gonna have 1-3 errors here.
            print "Could not fetch file(s)\n";
            foreach my $file ( keys %{ $input->{freshen_errors} } ) {
                print "\t$file  => $input->{freshen_errors}{ $file }\n";
            }
        }
        else {
            print "Failed to create storage dir: $input->{freshen_error}\n";
        }
        $poco->shutdown;
    }
    else {
        # we got our files, let's parse them now.
        $poco->fetch_info( {
                event => 'info'
            }
        );
    }
}

sub info {
    my ( $kernel, $results ) = @_[ KERNEL, ARG0 ];

    use Data::Dumper;
    print Dumper ( $results->{mods}{$Module_Name} );
    
    # shut the PoCo down
    $poco->shutdown;
}