diff options
Diffstat (limited to 'lib/WebCoso/Config.pm')
-rw-r--r-- | lib/WebCoso/Config.pm | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm index f8dee5a..a72e49c 100644 --- a/lib/WebCoso/Config.pm +++ b/lib/WebCoso/Config.pm @@ -2,10 +2,12 @@ package WebCoso::Config; use strict; use warnings; use WebCoso::Config::Collections; +use WebCoso::Pipeline; use WebCoso::X; my @resources; my $collections=WebCoso::Config::Collections->new(); +my %resource_to_pipeline; sub read_scalar { my ($class,$content,$filename)=@_; @@ -19,7 +21,8 @@ EOF if ($@) { WebCoso::X::ConfigError->throw( filename => $filename, - error => $@); + error => $@, + ); } else { return 1; @@ -44,9 +47,20 @@ sub get_collections { return $collections; } +sub get_pipeline_for { + my ($class, $resource)=@_; + + WebCoso::X::NoSuchResource->throw( + resource => $resource, + ) unless exists $resource_to_pipeline{$resource}; + + return $resource_to_pipeline{$resource}; +} + sub clear { @resources=(); $collections=WebCoso::Config::Collections->new(); + %resource_to_pipeline=(); } package WebCoso::Config::Helpers; @@ -60,7 +74,7 @@ use vars qw($FILENAME @EXPORT); sub res { my $dest_filename=pop @_; - my $pipeline_name=pop @_; + my $short_pipeline_name=pop @_; my @source_files=@_; my $config_dir=file($FILENAME)->parent->absolute; @@ -72,26 +86,41 @@ sub res { if (!-e $abs_name) { WebCoso::X::FileNotFound->throw( filename => $_, - abs_filename => $abs_name); + abs_filename => $abs_name, + ); }; $abs_name; } @source_files; - WebCoso::Config::Resource->new({ + my $pipeline_name="WebCoso::Pipeline::$short_pipeline_name"; + if (! $pipeline_name->can('process') ) { + WebCoso::X::NoSuchPipeline->throw( + pipeline => $short_pipeline_name, + ); + }; + + my $resource=WebCoso::Config::Resource->new({ sources=>[@abs_source_files], - pipeline=>$pipeline_name, destination=>$dest_filename }); + + # brutto! + $resource_to_pipeline{$resource}=$pipeline_name; + + return $resource; } sub coll { my ($name,$parents,$children,$resources)=@_; - WebCoso::Config::Collection->new({ + + my $collection=WebCoso::Config::Collection->new({ name=>$name, parents=>$parents||[], children=>$children||[], resources=>$resources||[], }); + + return $collection; } 1; |