Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Tools for working with Gentoo Overlays
Perl

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
corpus
examples
lib/Gentoo
maint
misc
t
.gitignore
.mailmap
.perltidyrc
.travis.yml
Changes
LICENSE
README.mkdn
dist.ini
dist.ini.meta
perlcritic.rc
weaver.ini

README.mkdn

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();

print "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

"File" in Types::Path::Tiny

name

Repository name.

isa => Gentoo__Overlay_RepositoryName, ro, lazy_build

RepositoryName

"_build_name"

ATTRIBUTE ACCESSORS

category_names

Returns a list of the names of all the categories.

my @list = sort $overlay->category_names();

"_categories"

categories

Returns a hash of Category objects.

my %hash = $overlay->categories;
print $hash{dev-perl}->pretty_name; # dev-perl/::gentoo

"_categories"

get_category

Returns a Category Object for a given category name

my $cat = $overlay->get_category('dev-perl');

"_categories"

PRIVATE ATTRIBUTES

_profile_dir

Path to the profile sub-directory.

isa => Dir, ro, lazy_build

"Dir" in MooseX::Types::Path::Tiny

"_build__profile_dir"

_categories

The auto-generating category hash backing

isa => HashRef[ Gentoo__Overlay_Category ], ro, lazy_build

"_build__categories"

"_has_category"

"category_names"

"categories"

"get_category"

"Gentoo__Overlay_Category" in Gentoo::Overlay::Types

MooseX::Types::Moose

PRIVATE ATTRIBUTE ACCESSORS

_has_category

Returns if a named category exists

$overlay->_has_category("dev-perl");

"_categories"

PRIVATE CLASS ATTRIBUTES

_default_paths

Class-wide list of path generators.

isa => HashRef[ CodeRef ], ro, lazy_build

"_build__default_paths"

PRIVATE METHODS

_build_name

Extracts the repository name out of the file 'repo_name' in $OVERLAY/profiles/repo_name

$overlay->_build_name

"name"

_build__profile_dir

Verifies the existence of the profile directory, and returns the path to it.

$overlay->_build__profile_dir

"_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;

"_categories"

"_build___categories_scan"

"_build___categories_file"

_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) 2014 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.

Something went wrong with that request. Please try again.