Ask
view release on metacpan or search on metacpan
lib/Ask/Clui.pm view on Meta::CPAN
use 5.008008;
use strict;
use warnings;
package Ask::Clui;
our $AUTHORITY = 'cpan:TOBYINK';
our $VERSION = '0.015';
use Moo;
use Term::Clui 1.65 ();
use Path::Tiny 'path';
use namespace::autoclean;
with 'Ask::API';
sub BUILD {
STDOUT->autoflush( 1 );
}
sub is_usable {
my ( $self ) = @_;
-t STDIN and -t STDOUT;
}
sub quality {
my ( $self ) = ( shift );
( -t STDIN and -t STDOUT ) ? 91 : 30;
}
sub info {
my ( $self, %opts ) = ( shift, @_ );
chomp( my $text = $opts{text} );
Term::Clui::inform( $opts{text} );
return;
}
sub warning {
my ( $self, %opts ) = ( shift, @_ );
chomp( my $text = $opts{text} );
Term::Clui::inform( 'WARNING: ' . $opts{text} );
return;
}
sub error {
my ( $self, %opts ) = ( shift, @_ );
chomp( my $text = $opts{text} );
Term::Clui::inform( 'ERROR: ' . $opts{text} );
return;
}
sub entry {
my ( $self, %opts ) = ( shift, @_ );
if ( $opts{hide_text} ) {
return Term::Clui::ask_password( $opts{text} );
}
return Term::Clui::ask( $opts{text}, $opts{default} || '' );
}
sub question {
my ( $self, %opts ) = ( shift, @_ );
chomp( my $text = $opts{text} );
return Term::Clui::confirm( $opts{text} );
}
my $_choices = sub {
my $ref = shift;
map $_->[0], @$ref;
};
sub single_choice {
( run in 0.900 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )