#!/usr/bin/env perl
package perlhl;
use strict;
use warnings;
use v5.10.1;
use App::perlhl;
use Getopt::Long;
use Pod::Usage;

# ABSTRACT: command-line syntax highlighter for Perl source code
our $VERSION = '0.007'; # VERSION

my %opts = ();
GetOptions( \%opts,
    'help|?',
    'version',
    'html',
);

pod2usage(
    -verbose => 2,
) if $opts{help};


if (delete $opts{version}) {
    my $this = __PACKAGE__;
    my $this_ver = (defined __PACKAGE__->VERSION ? __PACKAGE__->VERSION : 'dev');
    say "$this version $this_ver" and exit;
}

my $mode    = delete $opts{version} ? 'version' : 'highlight';
my $output  = delete $opts{html}    ? 'html'    : 'ansi';

App::perlhl->new($output)->run($mode, @ARGV);

__END__

=pod

=encoding utf-8

=head1 NAME

perlhl - command-line syntax highlighter for Perl source code

=head1 VERSION

version 0.007

=head1 SYNOPSIS

    perlhl < bin/perlhl | less -R
    perlhl bin/perlhl lib/App/perlhl.pm

=head1 DESCRIPTION

B<perlhl> is a command line syntax highlighter for Perl code.

=head1 OPTIONS

=over 4

=item B<--help>, -h, -?

Opens this man page and exits.

=item B<--version>

Prints the version of this program and supporting libraries.

=item B<--html>

Output HMTL fragment instead of ANSI terminal escapes.

=back

=head1 USE

Provide input on stdin to B<perlhl> to highlight it to stdout with ANSI colour
escapes.

    perlhl < script.pl

It is not recommended to provide multiple files on stdout, since they'll be
concatenated. This makes it impossible to know where one ends and the next
begins, and will yield inferior syntax highlighting results. To highlight
multiple files, provide filenames on the command line:

    perlhl lib/My/Module.pm lib/My/Module/Again.pm

Provide the B<--html> option to output an HTML fragment. In
the future, this option might print a whole valid document.

=head1 SEE ALSO

=over 4

=item * L<Syntax::Highlight::Perl::Improved>

=item * L<Term::ANSIColor>

=item * L<Text::Highlight>

=back

There is a one-liner that can do something comparable:

    perl -MText::Highlight -E 'my $h = Text::Highlight->new(ansi => 1);
    > my $text = do { local $/; open my $fh, "<", $ARGV[0]; <$fh> };
    > say $h->highlight("Perl", $text);
    > ' bin/perlhl

=head1 AVAILABILITY

The project homepage is L<http://metacpan.org/release/App-perlhl/>.

The latest version of this module is available from the Comprehensive Perl
Archive Network (CPAN). Visit L<http://www.perl.com/CPAN/> to find a CPAN
site near you, or see L<https://metacpan.org/module/App::perlhl/>.

=head1 SOURCE

The development version is on github at L<http://github.com/doherty/App-perlhl>
and may be cloned from L<git://github.com/doherty/App-perlhl.git>

=head1 BUGS AND LIMITATIONS

You can make new bug reports, and view existing ones, through the
web interface at L<https://github.com/doherty/App-perlhl/issues>.

=head1 AUTHOR

Mike Doherty <doherty@cpan.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Mike Doherty.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut