* MooseX::Getopt::Session: New attribute "status".
Piotr Roszatycki [Thu, 20 Nov 2008 15:52:06 +0000 (15:52 +0000)]
* MooseX::Getopt::Session: Constructor does not call build_options.
* MooseX::Getopt: new_with_options calls $getopt->build_options.

lib/MooseX/Getopt.pm
lib/MooseX/Getopt/Parser/Descriptive.pm
lib/MooseX/Getopt/Parser/Long.pm
lib/MooseX/Getopt/Session.pm

index 8d0acd3..8eda924 100644 (file)
@@ -52,6 +52,9 @@ sub get_options_from_argv {
                        options => $options,
                    );
 
+    # Call Getopt parser only once.
+    $getopt->build_options if not $getopt->has_status;
+
     my $new_options = {
         %{ $options },                          # explicit options to ->new
         %{ $getopt->options },                  # options from CLI
index 1b69fb5..57ecaea 100644 (file)
@@ -95,6 +95,7 @@ sub build_options {
     # Include old options and usage object
     $new_options = { usage => $usage, %$options, %$new_options };
 
+    $getopt->status( !! $warnings );
     $getopt->options( $new_options );
 
     die $warnings if $warnings;
index e697e1f..3a1eb2d 100644 (file)
@@ -66,6 +66,7 @@ sub build_options {
     # Filter not defined values in new_options hashref
     $new_options = { map { $_ => $new_options->{$_} } grep { defined $new_options->{$_} } keys %$new_options };
 
+    $getopt->status( !! $warnings );
     $getopt->options( $new_options );
 
     die $warnings if $warnings;
index bdb0417..dae6c01 100644 (file)
@@ -44,12 +44,12 @@ has options => (
     default => sub { {} },
 );
 
-
-sub BUILD {
-    my ($self, $args) = @_;
-
-    $self->build_options;
-};
+# Status returned by Getopt parser
+has status => (
+    is => 'rw',
+    isa => 'Bool',
+    predicate => 'has_status',
+);
 
 
 sub build_options {
@@ -141,8 +141,8 @@ L<MooseX::Getopt::Parser>.
 
 =item B<new (%params)>
 
-This method creates new CLI session for L<MooseX::Getopt> and calls
-C<build_options> method.
+This method creates new CLI session object for L<MooseX::Getopt>.  The
+session should be started with C<build_options> method.
 
 =item B<build_options>
 
@@ -181,9 +181,10 @@ This accessor contains an arrayref of options parsed from command line by
 L<MooseX::Getopt::Parser>.  If the options list are not empty before parsing
 the command line, the old list will be included to new list.
 
-=item B<BUILD>
+=item B<status>
 
-This is a default L<Moose> constructor.
+This accessor contains a true value if L<MooseX::Getopt::Parser> was
+called via C<build_options> method and it succeeded.
 
 =item B<meta>