diff options
author | Kent Fredric <kentfredric@gmail.com> | 2012-08-01 05:04:42 +1200 |
---|---|---|
committer | Kent Fredric <kentfredric@gmail.com> | 2012-08-01 05:04:42 +1200 |
commit | da4b628c361f0ab07511a0ad257e0067e7d682d5 (patch) | |
tree | 778c2dfa701dd190afb362f9b3a53ec4e02a8449 /scripts | |
parent | [fix] perl-constant 1.230.0 for 5.16 (diff) | |
download | perl-overlay-da4b628c361f0ab07511a0ad257e0067e7d682d5.tar.gz perl-overlay-da4b628c361f0ab07511a0ad257e0067e7d682d5.tar.bz2 perl-overlay-da4b628c361f0ab07511a0ad257e0067e7d682d5.zip |
[script] Fast virtuals index
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/virtuals.pm | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/scripts/lib/virtuals.pm b/scripts/lib/virtuals.pm new file mode 100644 index 000000000..0e1e1639d --- /dev/null +++ b/scripts/lib/virtuals.pm @@ -0,0 +1,185 @@ +package virtuals { + + use 5.16.0; + use Moo; + use Sub::Quote qw( quote_sub ); + + has items => ( + is => rw =>, + default => quote_sub(q{ [] }), + ); +} + +package virtual::record { + use 5.16.0; + use Moo; + + has package => ( is => rw =>, required => 1, ); + has repo => ( is => rw =>, required => 1, ); + + sub virtual { + my $self = shift; + return $self->package =~ s/^/virtual\/perl-/r; + } + + sub core { + my $self = shift; + return $self->package =~ s/^/perl-core\//r; + } +}; + +package virtuals::perl { + use 5.16.0; + use Moo; + extends 'virtuals'; + + sub instance { + my ( $class ) = shift; + state $cache = do { + $class->new(); + }; + return $class; + } + + has +items => ( default => quote_sub(q| map { virtual::record->new( $_ , 'perl-experimental' ) } $_[0]->_packages; |) ); + + sub _packages { + return qw( Archive-Extract + B-Debug + B-Lint + CPAN + CPANPLUS + CPANPLUS-Dist-Build + Devel-DProf + Devel-PPPort + Devel-SelfStubber + Dumpvalue + Exporter + ExtUtils-MakeMaker + File-Fetch + Filter-Simple + HTTP-Tiny + IPC-SysV + Log-Message + Log-Message-Simple + Math-Complex + Module-CoreList + NEXT + Object-Accessor + Pod-LaTeX + Pod-Perldoc + Pod-Plainer + SelfLoader + Term-UI + Unicode-Collate + Unicode-Normalize + constant + i18n-langtags + if ); + } +} + +package virtuals::gentoo { + use 5.16.0; + use Moo; + extends 'virtuals'; + has +items => ( default => quote_sub(q| map { virtual::record->new( $_ , 'gentoo' ) } $_[0]->_packages; |), ); + + sub instance { + my ( $class ) = shift; + state $cache = do { + $class->new(); + }; + return $class; + } + + + sub _packages { + return qw( + Archive-Tar + Attribute-Handlers + AutoLoader + CGI + Class-ISA + Compress-Raw-Bzip2 + CPAN-Meta + CPAN-Meta-Requirements + CPAN-Meta-YAML + Data-Dumper + DB_File + digest-base + Digest-MD5 + Digest-SHA + Encode + ExtUtils-CBuilder + ExtUtils-Command + ExtUtils-Constant + ExtUtils-Install + ExtUtils-MakeMaker + ExtUtils-Manifest + ExtUtils-ParseXS + File-Path + File-Spec + File-Temp + Filter + Getopt-Long + IO + IO-Compress + IO-Zlib + IPC-Cmd + JSON-PP + Locale-Maketext-Simple + MIME-Base64 + Math-BigInt + Math-BigInt-FastCalc + Memoize + Module-Build + Module-CoreList + Module-Load + Module-Load-Conditional + Module-Loaded + Module-Metadata + Module-Pluggable + Package-Constants + Params-Check + Parse-CPAN-Meta + Perl-OSType + Pod-Escapes + Pod-Simple + PodParser + Safe + Scalar-List-Utils + Socket + Storable + Switch + Sys-Syslog + Term-ANSIColor + Test + Test-Harness + Test-Simple + Text-Balanced + Text-ParseWords + Text-Tabs+Wrap + Thread-Queue + Thread-Semaphore + Time-HiRes + Time-Local + Time-Piece + Version-Requirements + XSLoader + digest-base + i18n-langtags + libnet + locale-maketext + net-ping + parent + podlators + threads + threads-shared + version + ); + } +}; + +1; + |