my %args = @_;
- my ($name, $category, $version);
+ my ($category, $name, $version);
if (defined $args{name}) {
- ($name, $category, $version) = @args{qw/name category version/};
+ ($category, $name, $version) = @args{qw/category name version/};
Carp::confess('Category unspecified') unless defined $category;
/[^\w-]/ and Carp::confess('Invalid argument') for $name, $category;
} elsif (defined $args{atom}) {
my $atom = $args{atom};
$atom =~ m{^([\w-]+)/([\w-]+)-v?($version_rx)$}
or Carp::confess('Invalid atom');
- ($name, $category, $version) = ($1, $2, $3);
+ ($category, $name, $version) = ($1, $2, $3);
} elsif (defined $args{ebuild}) {
my $ebuild = $args{ebuild};
- $ebuild =~ m{/([\w-]+)/([\w-]+)-v?($version_rx)\.ebuild$}
+ $ebuild =~ m{/([\w-]+)/([\w-]+)/\2-v?($version_rx)\.ebuild$}
or Carp::confess('Invalid ebuild');
- ($name, $category, $version) = ($1, $2, $3);
+ ($category, $name, $version) = ($1, $2, $3);
} else {
Carp::confess('Not enough information for building an atom object');
}