App-gh

 view release on metacpan or  search on metacpan

lib/App/gh/Command/Search.pm  view on Meta::CPAN

package App::gh::Command::Search;
use warnings;
use strict;
use base qw(App::gh::Command);
use App::gh::Utils;
use App::gh;
use Term::ANSIColor;
use Text::Wrap;
use v5.10;

=head1 NAME

App::gh::Command::Search - search repositories

=head1 USAGE

    $ gh search perl6

=cut

sub run {
    my ($self,$keyword) = @_;
    local $|;
    info "Fetching list...";

    my $data = App::gh->github->query( 'GET' , '/legacy/repos/search/' . $keyword );

    my @ary = ();
    for my $repo ( @{ $data->{repositories} } ) {
        my $name = sprintf "%s/%s", $repo->{username} , $repo->{name};
        my $desc = $repo->{description};
        push @ary, [ $name , $desc || '' ];
    }
    print_list @ary;

#     my $result = App::gh->api->search($keyword);
#     if( $self->{long} ) {
#         for my $entry ( @{ $result->{repositories} } ) {
#             print color 'white bold';
#             say "*   $entry->{owner}/$entry->{name}";
#             print color 'reset';
#             say "    W/F:      $entry->{watchers}/$entry->{forks}";
#             say "    Url:      " .  $entry->{url} if $entry->{url};
#             say "    Homepage: " .  $entry->{homepage} if $entry->{homepage};
#             say "\n" . wrap( '    ', '    ', $entry->{description} ) . "\n";
#         }
#     } else {
#         my @ary = ();
#         for my $repo ( @{ $result->{repositories} } ) {
#         }
#         # print short list
#     }

}

1;
__END__

Entry structure

    {
        'size' => 120,
        'watchers' => 228,
        'created_at' => '2010/09/18 05:38:07 -0700',
        'url' => 'https://github.com/Marak/webservice.js',
        'followers' => 228,
        'open_issues' => 16,
        'owner' => 'Marak',
        'has_downloads' => $VAR1->{'repositories'}[0]{'has_issues'},
        'has_issues' => $VAR1->{'repositories'}[0]{'has_issues'},
        'language' => 'JavaScript',
        'pushed' => '2011/09/29 15:22:44 -0700',
        'name' => 'webservice.js',
        'private' => $VAR1->{'repositories'}[0]{'has_downloads'},
        'score' => '0.48941568',
        'has_wiki' => $VAR1->{'repositories'}[0]{'has_issues'},
        'description' => ' turn node.js modules into RESTFul web-services',
        'pushed_at' => '2011/09/29 15:22:44 -0700',
        'username' => 'Marak',
        'forks' => 21,
        'created' => '2010/09/18 05:38:07 -0700',
        'homepage' => 'http://blog.nodejitsu.com/create-nodejs-web-services-in-one-line',
        'fork' => $VAR1->{'repositories'}[0]{'has_downloads'},
        'type' => 'repo'
    },



( run in 0.431 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )