Provided by: libmoosex-app-perl_1.43-1_all bug

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 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.