#!/usr/bin/env perl
use strict;
use warnings;
use feature qw(say);

use IO::Async::Loop;
use Net::Async::Github;
use Time::Duration;

# use Log::Any::Adapter qw(Stdout);

my $token = shift or die "need a token";
my $loop = IO::Async::Loop->new;
$loop->add(
	my $gh = Net::Async::Github->new(
		token => $token,
	)
);

$gh->core_rate_limit->remaining->subscribe(sub {
    printf "Have %d Github requests remaining\n", $_;
});

$gh->users
    ->each(sub {
        printf "User [%s] has %d public repos and was last updated on %s%s\n",
            $_->login,
            $_->public_repos // 0,
            $_->updated_at ? $_->updated_at->to_string : '(unknown)',
            ($_->hireable ? " (available for hire!)" : "")
    })->await;
;