NAME
MooseX::App::Plugin::MutexGroup - Adds mutually exclusive options
SYNOPSIS
In your base class:
package
MyApp;
option
'UseAmmonia'
=> (
is
=>
'ro'
,
isa
=>
'Bool'
,
mutexgroup
=>
'NonMixableCleaningChemicals'
,
);
option
'UseChlorine'
=> (
is
=>
'ro'
,
isa
=>
'Bool'
,
mutexgroup
=>
'NonMixableCleaningChemicals'
);
In your script:
#!/usr/bin/env perl
use
strict;
use
warnings;
use
MyApp;
MyApp->new_with_options(
UseAmmonia
=> 1,
UseChlorine
=> 1 );
# generates Error
# More than one attribute from mutexgroup NonMixableCleaningChemicals('UseAmmonia','UseChlorine') *cannot* be specified
MyApp->new_with_options();
# generates Error
# One attribute from mutexgroup NonMixableCleaningChemicals('UseAmmonia','UseChlorine') *must* be specified
MyApp->new_with_options(
UseAmmonia
=> 1 );
# generates no errors
MyApp->new_with_options(
UseChlorine
=> 1 );
# generates no errors
DESCRIPTION
This plugin adds mutually exclusive options to your application. In the current implementation, all defined MutexGroups *must* have exactly one initialized option. This means that there is an implicit requiredness of one option from each MutexGroup.