package App::Codeowners::Options;
# ABSTRACT: Getopt and shell completion for App::Codeowners
+use v5.10.1;
use warnings;
use strict;
+use Encode qw(decode);
use Getopt::Long 2.39 ();
use Path::Tiny;
-use Pod::Usage;
our $VERSION = '9999.999'; # VERSION
+sub pod2usage {
+ eval { require Pod::Usage };
+ if ($@) {
+ my $ref = $VERSION eq '9999.999' ? 'master' : "v$VERSION";
+ my $exit = (@_ == 1 && $_[0] =~ /^\d+$/ && $_[0]) //
+ (@_ % 2 == 0 && {@_}->{'-exitval'}) // 2;
+ print STDERR <<END;
+Online documentation is available at:
+
+ https://github.com/chazmcgarvey/git-codeowners/blob/$ref/README.md
+
+Tip: To enable inline documentation, install the Pod::Usage module.
+
+END
+ exit $exit;
+ }
+ else {
+ Pod::Usage::pod2usage(@_);
+ }
+}
+
sub early_options {
return {
'color|colour!' => (-t STDOUT ? 1 : 0), ## no critic (InputOutput::ProhibitInteractiveTest)
'patterns' => {
'owner=s' => '',
},
+ 'projects' => {},
'show' => {
- 'project!' => 1,
+ 'owner=s@' => [],
+ 'pattern=s@' => [],
+ 'project=s@' => [],
+ 'patterns!' => 0,
+ 'projects!' => undef,
},
'update' => {},
};
my $class = shift;
my @args = @_;
+ # assume UTF-8 args if non-ASCII
+ @args = map { decode('UTF-8', $_) } @args if grep { /\P{ASCII}/ } @args;
+
my $self = bless {}, $class;
my @args_copy = @args;
exit 0;
}
if ($opts->{help}) {
- pod2usage(-exitval => 0, -verbose => 99, -sections => [qw(NAME SYNOPSIS OPTIONS)]);
+ pod2usage(-exitval => 0, -verbose => 99, -sections => [qw(NAME SYNOPSIS OPTIONS COMMANDS)]);
}
if ($opts->{manual}) {
pod2usage(-exitval => 0, -verbose => 2);