Why not adopt me?
NAME
Gentoo::Overlay - Tools for working with Gentoo Overlays
VERSION
version 2.001002
SYNOPSIS
my
$overlay
= Gentoo::Overlay->new(
path
=>
'/usr/portage'
);
my
$name
=
$overlay
->name();
my
%categories
=
$overlay
->categories();
"Overlay $name 's categories:\n"
;
for
(
sort
keys
%categories
){
printf
"%30s : %s"
,
$_
,
$categories
{
$_
};
}
# Overlay gentoo 's categories:
# .....
# dev-lang : /usr/portage/dev-lang
# .....
There will be more features eventually, this is just a first release.
METHODS
default_path
Useful function to easily wrap the class-wide method with a per-object sugar.
$overlay
->default_path(
'profiles'
);
->
::Overlay->_default_paths->{
'profiles'
}->(
$overlay
);
->
$overlay
->path->subdir(
'profiles'
)
$overlay
->default_path(
'category'
,
'foo'
);
->
::Overlay->_default_path(
'category'
)->(
$overlay
,
'foo'
);
->
$overlay
->path->subdir(
'foo'
)
$overlay
->default_path(
'repo_name'
);
->
::Overlay->_default_path(
'repo_name'
)->(
$overlay
);
->
$overlay
->_profile_dir->file(
'repo_name'
)
They're class wide functions, but they need individual instances to work.
iterate
$overlay
->iterate(
$what
,
sub
{
my
(
$context_information
) =
shift
;
} );
The iterate method provides a handy way to do walking across the whole tree stopping at each of a given type.
$what = 'categories'
$overlay
->iterate(
categories
=>
sub
{
my
(
$self
,
$c
) =
shift
;
# $c->{category_name} # String
# $c->{category} # Category Object
# $c->{num_categories} # How many categories are there to iterate
# $c->{last_category} # Index ID of the last category.
# $c->{category_num} # Index ID of the current category.
} );
$what = 'packages'
$overlay
->iterate(
packages
=>
sub
{
my
(
$self
,
$c
) =
shift
;
# $c->{category_name} # String
# $c->{category} # Category Object
# $c->{num_categories} # How many categories are there to iterate
# $c->{last_category} # Index ID of the last category.
# $c->{category_num} # Index ID of the current category.
#
# $c->{package_name} # String
# See ::Category for the rest of the fields provided by the package Iterator.
# Very similar though.
} );
$what = 'ebuilds'
$overlay
->iterate(
ebuilds
=>
sub
{
my
(
$self
,
$c
) =
shift
;
# $c->{category_name} # String
# $c->{category} # Category Object
# $c->{num_categories} # How many categories are there to iterate
# $c->{last_category} # Index ID of the last category.
# $c->{category_num} # Index ID of the current category.
#
# $c->{package_name} # String
# See ::Category for the rest of the fields provided by the package Iterator.
# Very similar though.
#
# $c->{ebuild_name} # String
# See ::Package for the rest of the fields provided by the ebuild Iterator.
# Very similar though.
} );
ATTRIBUTES
path
Path to repository.
isa
=> File, ro, required, coerce
name
Repository name.
isa
=> Gentoo__Overlay_RepositoryName, ro, lazy_build
ATTRIBUTE ACCESSORS
category_names
Returns a list of the names of all the categories.
my
@list
=
sort
$overlay
->category_names();
categories
Returns a hash of Category
objects.
my
%hash
=
$overlay
->categories;
$hash
{dev-perl}->pretty_name;
# dev-perl/::gentoo
get_category
Returns a Category Object for a given category name
my
$cat
=
$overlay
->get_category(
'dev-perl'
);
PRIVATE ATTRIBUTES
_profile_dir
Path to the profile sub-directory.
isa
=> Dir, ro, lazy_build
"Dir" in MooseX::Types::Path::Tiny
_categories
The auto-generating category hash backing
isa
=> HashRef[ Gentoo__Overlay_Category ], ro, lazy_build
"Gentoo__Overlay_Category" in Gentoo::Overlay::Types
PRIVATE ATTRIBUTE ACCESSORS
_has_category
Returns if a named category exists
$overlay
->_has_category(
"dev-perl"
);
PRIVATE CLASS ATTRIBUTES
_default_paths
Class-wide list of path generators.
isa
=> HashRef[ CodeRef ], ro, lazy_build
PRIVATE METHODS
_build_name
Extracts the repository name out of the file 'repo_name
' in $OVERLAY/profiles/repo_name
$overlay
->_build_name
_build__profile_dir
Verifies the existence of the profile directory, and returns the path to it.
$overlay
->_build__profile_dir
_build__categories
Generates the Category Hash-Table, either by reading the categories index ( new, preferred ) or by traversing the directory ( old, discouraged )
$category
->_build_categories;
_build___categories_file
Builds the category map using the 'categories' file found in the overlays profile directory.
$overlay
->_build___categories_file
_build___categories_scan
Builds the category map the hard way by scanning the directory and then skipping things that are files and/or blacklisted.
$overlay
->_build___categories_scan
_iterate_ebuilds
$object
->_iterate_ebuilds(
ignored_value
=>
sub
{ } );
Handles dispatch call for
$object
->iterate(
ebuilds
=>
sub
{ } );
_iterate_categories
$object
->_iterate_categories(
ignored_value
=>
sub
{ } );
Handles dispatch call for
$object
->iterate(
categories
=>
sub
{ } );
_iterate_packages
$object
->_iterate_packages(
ignored_value
=>
sub
{ } );
Handles dispatch call for
$object
->iterate(
packages
=>
sub
{ } );
AUTHOR
Kent Fredric <kentnl@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017 by Kent Fredric <kentnl@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.