Changeset 11102 for lang/perl/Punc/trunk
- Timestamp:
- 05/04/08 20:28:19 (7 months ago)
- Location:
- lang/perl/Punc/trunk/lib/Punc/Slave
- Files:
-
- 4 modified
-
Module.pm (modified) (1 diff)
-
Module/Service.pm (modified) (1 diff)
-
Module/Service/Debian.pm (modified) (1 diff)
-
Module/Service/RedHat.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Punc/trunk/lib/Punc/Slave/Module.pm
r10107 r11102 3 3 use strict; 4 4 use warnings; 5 use Punc::Util; 6 use Moose; 7 use MooseX::ClassAttribute; 5 8 use Module::Pluggable; 6 use Punc::Util; 9 10 class_has 'default_for' => ( isa => 'HashRef', is => 'rw', default => sub { {} } ); 11 12 sub import { 13 my ( $class, $args ) = @_; 14 my $pkg = caller(0); 15 no strict 'refs'; 16 unshift @{"$pkg\::ISA"}, $class; 17 $pkg->default_for($args); 18 } 7 19 8 20 sub new { 9 21 my $class = shift; 10 $class->search_path( new => $class ); 22 my $self = bless {}, $class; 23 $self->delegate; 24 } 11 25 12 my @modules = $class->plugins; 26 sub delegate { 27 my $self = shift; 28 29 $self->search_path( new => ref $self ); 30 my @modules = $self->plugins; 31 my $module_to_delegate; 13 32 for my $module ( @modules ) { 33 next if $module =~ /Role$/; 14 34 $module->require or die $@; 15 35 my $default_for = $module->default_for; 16 36 next unless $default_for; 17 18 37 my ( $fact ) = keys %$default_for; 19 38 if ( grep { Punc::Util->fact($fact) =~ /$_/i } @{ $default_for->{$fact} } ) { 20 $ class= $module;39 $module_to_delegate = $module; 21 40 } 22 41 } 23 42 24 bless {}, $class;43 bless $self, $module_to_delegate; 25 44 } 26 27 sub default_for { }28 45 29 46 sub exec { -
lang/perl/Punc/trunk/lib/Punc/Slave/Module/Service.pm
r8565 r11102 3 3 use strict; 4 4 use warnings; 5 use base qw( Punc::Slave::Module );6 use UNIVERSAL::require;7 5 8 sub status { 9 die; 10 } 6 use Moose; 11 7 8 extends 'Punc::Slave::Module'; 9 10 package Punc::Slave::Module::Service::Role; 11 use Moose::Role; 12 requires 'status'; 12 13 13 14 1; -
lang/perl/Punc/trunk/lib/Punc/Slave/Module/Service/Debian.pm
r10108 r11102 3 3 use strict; 4 4 use warnings; 5 use base qw( Punc::Slave::Module::Service ); 5 use Punc::Slave::Module::Service { operatingsystem => [ qw / debian ubuntu / ] }; 6 use Moose; 6 7 7 sub default_for { 8 return { 'operatingsystem' => [ 'debian', 'ubuntu' ] } 9 } 8 with 'Punc::Slave::Module::Service::Role'; 9 10 10 11 11 sub status { -
lang/perl/Punc/trunk/lib/Punc/Slave/Module/Service/RedHat.pm
r10463 r11102 3 3 use strict; 4 4 use warnings; 5 use base qw( Punc::Slave::Module::Service ); 5 use Punc::Slave::Module::Service { operatingsystem => [ qw / redhat fedora centos / ] }; 6 use Moose; 6 7 7 ### TODO: もっと簡単に定義できないか考える 8 ### default_for { operatingsystem => [ qw/ redhat fedora centos / ] } とか 9 ### use Punc::Slave::Module::Service { operatingsystem => [ qw / fedora / ] } とか 10 sub default_for { 11 return { 'operatingsystem' => [ 'redhat', 'fedora', 'centos' ] } 12 } 8 with 'Punc::Slave::Module::Service::Role'; 13 9 14 10 sub status { 15 11 my ( $self, $args ) = @_; 16 17 12 return $self->_command($args->[0], 'status'); 18 13 }
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)