1 package CPANPLUS::Backend::RV;
8 use CPANPLUS::Internals::Constants;
10 use IPC::Cmd qw[can_run run];
11 use Params::Check qw[check];
13 use base 'Object::Accessor';
15 local $Params::Check::VERBOSE = 1;
26 ### create a CPANPLUS::Backend::RV object
27 $backend_rv = CPANPLUS::Backend::RV->new(
31 function => $calling_function );
33 ### if you have a CPANPLUS::Backend::RV object
34 $passed_args = $backend_rv->args; # args passed to function
35 $ok = $backend_rv->ok; # boolean indication overall
37 $function = $backend_rv->fucntion # name of the calling
39 $rv = $backend_rv->rv # the actual return value
40 # of the calling function
44 This module provides return value objects for multi-module
45 calls to CPANPLUS::Backend. In boolean context, it returns the status
46 of the overall result (ie, the same as the C<ok> method would).
50 =head2 new( ok => BOOL, args => DATA, rv => DATA, [function => $method_name] )
52 Creates a new CPANPLUS::Backend::RV object from the data provided.
53 This method should only be called by CPANPLUS::Backend functions.
54 The accessors may be used by users inspecting an RV object.
56 All the argument names can be used as accessors later to retrieve the
65 Boolean indicating overall success
69 The arguments provided to the function that returned this rv object.
70 Useful to inspect later to see what was actually passed to the function
75 An arbitrary data structure that has the detailed return values of each
76 of your multi-module calls.
80 The name of the function that created this rv object.
81 Can be explicitly passed. If not, C<new()> will try to deduce the name
82 from C<caller()> information.
93 ok => { required => 1, allow => BOOLEANS },
94 args => { required => 1 },
95 rv => { required => 1 },
96 function => { default => CALLING_FUNCTION->() },
99 my $args = check( $tmpl, \%hash ) or return;
100 my $self = bless {}, $class;
102 # $self->mk_accessors( qw[ok args function rv] );
103 $self->mk_accessors( keys %$tmpl );
105 ### set the values passed in the struct ###
106 while( my($key,$val) = each %$args ) {
113 sub _ok { return shift->ok }
114 #sub _stringify { Carp::carp( "stringifying!" ); overload::StrVal( shift ) }
116 ### make it easier to check if($rv) { foo() }
117 ### this allows people to not have to explicitly say
118 ### if( $rv->ok ) { foo() }
119 ### XXX add an explicit stringify, so it doesn't fall back to "bool"? :(
120 use overload bool => \&_ok,
121 # '""' => \&_stringify,
128 Please report bugs or other issues to E<lt>bug-cpanplus@rt.cpan.org<gt>.
132 This module by Jos Boumans E<lt>kane@cpan.orgE<gt>.
136 The CPAN++ interface (of which this module is a part of) is copyright (c)
137 2001 - 2007, Jos Boumans E<lt>kane@cpan.orgE<gt>. All rights reserved.
139 This library is free software; you may redistribute and/or modify it
140 under the same terms as Perl itself.