App-tldr
view release on metacpan or search on metacpan
lib/App/tldr.pm view on Meta::CPAN
package App::tldr 0.21;
use v5.16;
use warnings;
use Encode ();
use File::Spec;
use File::Which ();
use Getopt::Long ();
use HTTP::Tiny;
use IO::Socket::SSL;
use Pod::Usage ();
use Term::ReadKey ();
use Text::Fold ();
use constant DEBUG => !!$ENV{TLDR_DEBUG};
use constant REPOSITORY => $ENV{TLDR_REPOSITORY} // '';
my $URL = "https://raw.githubusercontent.com/tldr-pages/tldr/main/pages%s/%s/%s.md";
sub new {
my ($class, %option) = @_;
my $http = HTTP::Tiny->new(verify_SSL => 1);
bless { http => $http, %option }, $class;
}
sub parse_options {
my ($self, @argv) = @_;
$self->{platform} = [];
$self->{unicode} = ($ENV{LANG} || "") =~ /UTF-8/i ? 1 : 0;
my $parser = Getopt::Long::Parser->new(
config => [qw(no_auto_abbrev no_ignore_case)],
);
$parser->getoptionsfromarray(
\@argv,
"h|help" => sub { print $self->_help; exit },
"l|language=s" => \my $language,
"o|os=s@" => \($self->{platform}),
"v|version" => sub { printf "%s %s\n", ref $self, $self->VERSION; exit },
"pager=s" => \my $pager,
"no-pager" => \my $no_pager,
"unicode!" => \$self->{unicode},
) or exit(2);
$self->{argv} = \@argv;
if ($language) {
$language = $language =~ /^\./ ? $language : ".$language";
}
$self->{language} = $language || '';
if (!$no_pager and -t STDOUT and my $guess = $self->_guess_pager($pager)) {
$self->{pager} = $guess;
}
push @{$self->{platform}}, $self->_guess_platform, "common";
$self;
}
sub _guess_pager {
my $self = shift;
my $cmd;
for my $try (grep $_, @_, $ENV{PAGER}, "less", "more") {
if (my $found = File::Which::which($try)) {
$cmd = $found, last;
}
}
return if !$cmd;
[$cmd, $cmd =~ /\bless$/ ? "-R" : ()];
}
sub _help {
my ($self, $exit) = @_;
( run in 1.471 second using v1.01-cache-2.11-cpan-5837b0d9d2c )