The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Parse::CPAN::Packages::Distribution;
use Moose;

has 'prefix'    => ( is => 'rw', isa => 'Str' );
has 'dist'      => ( is => 'rw', isa => 'Str|Undef' );
has 'version'   => ( is => 'rw', isa => 'Str|Undef' );
has 'maturity'  => ( is => 'rw', isa => 'Str' );
has 'filename'  => ( is => 'rw', isa => 'Str' );
has 'cpanid'    => ( is => 'rw', isa => 'Str' );
has 'distvname' => ( is => 'rw', isa => 'Str|Undef' );
has 'packages'  => ( is => 'rw', isa => 'ArrayRef', default => sub { [] } );

__PACKAGE__->meta->make_immutable;

sub contains {
    my $self = shift;
    return @{ $self->packages };
}

sub add_package {
    my $self = shift;
    push @{ $self->packages }, @_;
}

1;

__END__

=head1 NAME

Parse::CPAN::Packages::Distribution

=head1 DESCRIPTION

Represents a CPAN distribution.

=head1 METHODS

=head2 contains

Returns the packages in the distribution.

=head2 add_package

Adds a package to the distribution.