NAME
MooseX::App::Plugin::MutexGroup - Adds mutually exclusive options
SYNOPSIS
In your base class:
package MyApp;use MooseX::App qw(MutexGroup);option 'UseAmmonia' => (is => 'ro',isa => 'Bool',mutexgroup => 'NonMixableCleaningChemicals',);option 'UseChlorine' => (is => 'ro',isa => 'Bool',mutexgroup => 'NonMixableCleaningChemicals');
In your script:
#!/usr/bin/env perluse 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 specifiedMyApp->new_with_options();# generates Error# One attribute from mutexgroup NonMixableCleaningChemicals('UseAmmonia','UseChlorine') *must* be specifiedMyApp->new_with_options( UseAmmonia => 1 );# generates no errorsMyApp->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.