App-Colorist
view release on metacpan or search on metacpan
lib/App/Colorist.pm view on Meta::CPAN
has configuration => (
is => 'ro',
isa => 'Str',
traits => [ 'Getopt' ],
cmd_aliases => [ qw(c) ],
lazy_build => 1,
);
sub _build_configuration {
my $self = shift;
return $self->extra_argv->[0] if $self->execute;
return;
}
has ruleset => (
is => 'ro',
isa => 'Str',
required => 1,
traits => [ 'Getopt' ],
cmd_aliases => [ qw(R) ],
default => 'rules',
);
has colorset => (
is => 'ro',
isa => 'Str',
required => 1,
traits => [ 'Getopt' ],
cmd_aliases => [ qw(C) ],
default => 'colors',
);
has include => (
is => 'ro',
isa => 'ArrayRef',
required => 1,
traits => [ 'Getopt' ],
cmd_aliases => [ qw(I) ],
default => sub { [] },
);
has debug => (
is => 'ro',
isa => 'Bool',
required => 1,
default => 0,
);
has execute => (
is => 'ro',
isa => 'Bool',
traits => [ 'Getopt' ],
cmd_aliases => [ qw(e) ],
lazy_build => 1,
);
sub _build_execute {
my $self = shift;
return $self->stderr ? 1 : 0;
}
has stderr => (
is => 'ro',
isa => 'Bool',
required => 1,
traits => [ 'Getopt' ],
cmd_aliases => [ qw(E) ],
default => 0,
);
# I would like to have this someday...
# has follow => (
# is => 'ro',
# isa => 'Bool',
# required => 1,
# default => 0,
# );
has _colorizer => (
reader => 'colorizer',
isa => 'App::Colorist::Colorizer',
lazy_build => 1,
handles => [ 'run' ],
);
sub _build__colorizer {
my $self = shift;
my @args = @{ $self->extra_argv };
my %params;
# The command-line contains the command to run and arguments to it
if ($self->execute) {
# They have asked us to capture STDERR too
if ($self->stderr) {
open3('<&STDIN', my $outfh, my $errfh, @args);
$params{inputs} = [ $outfh, $errfh ];
}
# They have asked us to capture just STDOUT
else {
open my $fh, '-|', @args or die "cannot execute ", join(' ', @args), ": ", $!;
$params{inputs} = [ $fh ];
}
}
# Otherwise, we use the default input reading from ARGV
return App::Colorist::Colorizer->new(
configuration => $self->configuration,
ruleset => $self->ruleset,
colorset => $self->colorset,
include => $self->include,
debug => $self->debug,
%params,
);
}
sub BUILD {
my $self = shift;
# This makes sure that <ARGV> works
@ARGV = @{ $self->extra_argv };
}
__PACKAGE__->meta->make_immutable;
__END__
=pod
=encoding UTF-8
=head1 NAME
App::Colorist - Add color to your plain old outputs
=head1 VERSION
version 0.150460
=head1 DESCRIPTION
This documentation is primarily concerned with the installation of the application and giving an in-depth description of the configuration of colorist rulesets and colorsets. For more information about the command-line options, see L<colorist>.
B<Installer Beware.> This application is still early in development, so please be aware that any upgrade might drastically change the way the application works.
=head2 SYNOPSIS
# See the manual for colorist for command-line info
alias cpanm="colorist -E cpanm"
cpanm App::Colorist
# OOOH! Look at the pretty colors!
( run in 2.877 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )