DynGig-CLI

 view release on metacpan or  search on metacpan

lib/DynGig/CLI/Cluster/Client.pm  view on Meta::CPAN


$exe B<--help>

[echo range .. |] $exe range ..
[B<--timeout seconds>] [B<--server svr:port>]

[echo range .. |] $exe range .. B<--count>
[B<--timeout seconds>] [B<--server svr:port>]

[echo range .. |] $exe range .. B<--expand> [B<--delimiter> token]
[B<--timeout seconds>] [B<--server svr:port>]

=cut
sub main
{
    my ( $class, %option ) = @_;

    map { croak "$_ not defined" if ! defined $option{$_} }
        qw( delimiter timeout server );

    my $delimiter = $option{delimiter};

    $delimiter =~ s/\n/newline/g;
    $delimiter =~ s/\t/tab/g;

    my $menu = DynGig::Util::CLI->new
    (
        'h|help',"print help menu",
        'c|count','count of elements',
        'e|expand','expand into a list',
        'delimiter=s',"[ $delimiter ]",
        'timeout=i',"[ $option{timeout} ]",
        'server=s',"[ $option{server} ]",
    );

    my %pod_param = ( -input => __FILE__, -output => \*STDERR );

    Pod::Usage::pod2usage( %pod_param )
        unless Getopt::Long::GetOptions( \%option, $menu->option() );

    if ( $option{h} )
    {
        warn join "\n", "Default value in [ ]", $menu->string(), "\n";
        return 0;
    }

    croak "poll: $!\n" unless my $select = IO::Select->new();

    my ( $buffer, $length );

    $select->add( *STDIN );

    map { $length = DynGig::Util::Sysrw->read( $_, $buffer ) }
        $select->can_read( 0.1 );

    push @ARGV, split /\s+/, $buffer if $length;

    Pod::Usage::pod2usage( %pod_param ) unless @ARGV;

    my $range = DynGig::Range::Cluster
        ->setenv( map { $_ => $option{$_} } qw( timeout server ) )
        ->new( \@ARGV );

    if ( $option{e} )
    {
        local $, = $option{delimiter};
        local $\ = "\n";

        print $range->list();
    }
    else
    {
        printf "%s\n", $option{c} ? $range->size() : $range->string();
    }
}

=head1 NOTE

See DynGig::CLI

=cut

1;

__END__



( run in 0.497 second using v1.01-cache-2.11-cpan-f56aa216473 )