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
t
xt
.perltidyrc
Build.PL
Changes
LICENSE
MANIFEST
META.json
META.yml
README
dist.ini
perlcritic.rc
weaver.ini

README

NAME
    Gentoo::Overlay - Tools for working with Gentoo Overlays

VERSION
    version 1.0.1

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 => Dir, ro, required, coerce

    "Dir" in MooseX::Types::Path::Class

  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::Class

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

AUTHOR
    Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2012 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.