Move CPANPLUS from ext/ to cpan/
[p5sagit/p5-mst-13.2.git] / cpan / CPANPLUS / lib / CPANPLUS / Module / Fake.pm
CommitLineData
6aaee015 1package CPANPLUS::Module::Fake;
2
3
4use CPANPLUS::Error;
5use CPANPLUS::Module;
6use CPANPLUS::Module::Author::Fake;
7use CPANPLUS::Internals;
8
9use strict;
10use vars qw[@ISA];
11use Params::Check qw[check];
12
13@ISA = qw[CPANPLUS::Module];
14$Params::Check::VERBOSE = 1;
15
16=pod
17
18=head1 NAME
19
20CPANPLUS::Module::Fake
21
22=head1 SYNOPSIS
23
24 my $obj = CPANPLUS::Module::Fake->new(
25 module => 'Foo',
26 path => 'ftp/path/to/foo',
27 author => CPANPLUS::Module::Author::Fake->new,
28 package => 'fake-1.1.tgz',
29 _id => $cpan->_id,
30 );
31
32=head1 DESCRIPTION
33
34A class for creating fake module objects, for shortcut use internally
35by CPANPLUS.
36
37Inherits from C<CPANPLUS::Module>.
38
39=head1 METHODS
40
41=head2 new( module => $mod, path => $path, package => $pkg, [_id => DIGIT] )
42
43Creates a dummy module object from the above parameters. It can
44take more options (same as C<< CPANPLUS::Module->new >> but the above
45are required.
46
47=cut
48
49sub new {
50 my $class = shift;
51 my %hash = @_;
52
53 local $Params::Check::ALLOW_UNKNOWN = 1;
54
55 my $tmpl = {
56 module => { required => 1 },
57 path => { required => 1 },
58 package => { required => 1 },
59 _id => { default => CPANPLUS::Internals->_last_id },
60 author => { default => '' },
61 };
62
63 my $args = check( $tmpl, \%hash ) or return;
64
65 $args->{author} ||= CPANPLUS::Module::Author::Fake->new(
66 _id => $args->{_id} );
67
68 my $obj = CPANPLUS::Module->new( %$args ) or return;
69
70 unless( $obj->_id ) {
71 error(loc("No '%1' specified -- No CPANPLUS object associated!",'_id'));
72 return;
73 }
74
75 ### rebless object ###
76 return bless $obj, $class;
77}
78
791;
80
81# Local variables:
82# c-indentation-style: bsd
83# c-basic-offset: 4
84# indent-tabs-mode: nil
85# End:
86# vim: expandtab shiftwidth=4: