package Getopt::Kingpin::Command;
use 5.008001;
use strict;
use warnings;
use Getopt::Kingpin -base;
use Carp;
our $VERSION = "0.10";
sub help_short {
my $self = shift;
my @help = ($self->name);
if ($self->name eq "help") {
push @help, "[<command>...]";
} else {
if ($self->flags->count > 1) {
push @help, "[<flags>]";
}
if ($self->commands->count > 0) {
push @help, "<command>";
push @help, "[<args> ...]";
} else {
foreach my $arg ($self->args->get_all) {
push @help, $arg->help_name(1);
}
}
}
return join " ", @help;
}
sub help {
my $self = shift;
printf "usage: %s %s\n", $self->parent->name, $self->help_short;
printf "\n";
if ($self->description ne "") {
printf "%s\n", $self->description;
printf "\n";
}
printf "%s\n", $self->flags->help;
if ($self->args->count > 0) {
printf "%s\n", $self->args->help;
}
if ($self->commands->count > 1) {
printf "Subcommands:\n";
foreach my $sub ($self->commands->get_all) {
next if $sub->name eq "help";
printf " %s %s\n", $sub->parent->name, $sub->name;
printf " %s\n", $sub->description;
printf "\n";
}
}
}
1;
__END__
=encoding utf-8
=head1 NAME
Getopt::Kingpin::Flags - command line option object
=head1 SYNOPSIS
use Getopt::Kingpin::Flags;
my $flags = Getopt::Kingpin::Flags->new;
$flags->add(
name => 'help',
description => 'Show context-sensitive help.',
)->bool();
=head1 DESCRIPTION
Getopt::Kingpin::Flags は、Getopt::Kingpinから使用するモジュールです。
Flagを集合として扱います。
=head1 METHOD
=head2 new()
Create Getopt::Kingpin::Flags object.
=head2 add(name => $name, description => $description)
$name と $description をもつGetopt::Kingpin::Flagを生成し、管理します。
=head2 get($name)
$name で指定したGetopt::Kingpin::Flagを取り出します。
=head2 keys()
定義されている$nameの一覧の出力します。
add()した順で出力されます。
=head2 values()
定義されているGetopt::Kingpin::Flagをすべて出力します。
add()した順で出力されます。
=head2 _help_length()
short_name、name、descriptionの文字列長を返します。
=head2 help()
ヘルプを表示します。
=head1 LICENSE
Copyright (C) sago35.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 AUTHOR
sago35 E<lt>sago35@gmail.comE<gt>
=cut