package MouseX::Getopt::Meta::Attribute::Trait;
# ABSTRACT: Optional meta attribute trait for custom option names
use Mouse::Role;
use Mouse::Util::TypeConstraints;
has 'cmd_flag' => (
is => 'rw',
isa => 'Str',
predicate => 'has_cmd_flag',
);
# This subtype is to support scalar -> arrayref coercion
# without polluting the built-in types
subtype '_MouseX_Getopt_CmdAliases' => as 'ArrayRef';
coerce '_MouseX_Getopt_CmdAliases'
=> from 'Str'
=> via { [$_] };
has 'cmd_aliases' => (
is => 'rw',
isa => '_MouseX_Getopt_CmdAliases',
predicate => 'has_cmd_aliases',
coerce => 1,
);
no Mouse::Util::TypeConstraints;
no Mouse::Role;
# register this as a metaclass alias ...
package # stop confusing PAUSE
Mouse::Meta::Attribute::Custom::Trait::Getopt;
sub register_implementation { 'MouseX::Getopt::Meta::Attribute::Trait' }
1;
=for stopwords metaclass commandline params configfile
=head1 SYNOPSIS
package App;
use Mouse;
with 'MouseX::Getopt';
has 'data' => (
traits => [ 'Getopt' ],
is => 'ro',
isa => 'Str',
default => 'file.dat',
# tells MouseX::Getopt to use --somedata as the
# command line flag instead of the normal
# autogenerated one (--data)
cmd_flag => 'somedata',
# tells MouseX::Getopt to also allow --moosedata,
# -m, and -d as aliases for this same option on
# the commandline.
cmd_aliases => [qw/ moosedata m d /],
# Or, you can use a plain scalar for a single alias:
cmd_aliases => 'm',
);
=head1 DESCRIPTION
This is a custom attribute metaclass trait which can be used to
specify a the specific command line flag to use instead of the
default one which L<MouseX::Getopt> will create for you.
=over 4
=item B<cmd_flag>
Changes the commandline flag to be this value, instead of the default,
which is the same as the attribute name.
=item B<cmd_aliases>
Adds more aliases for this commandline flag, useful for short options
and such.
=item B<has_cmd_flag>
=item B<has_cmd_aliases>
=back
=cut