diff options
Diffstat (limited to 'lib/WebCoso/Config.pm')
-rw-r--r-- | lib/WebCoso/Config.pm | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm deleted file mode 100644 index 018c3c7..0000000 --- a/lib/WebCoso/Config.pm +++ /dev/null @@ -1,176 +0,0 @@ -package WebCoso::Config; -use strict; -use warnings; -use WebCoso::Collections; -use WebCoso::Pipeline; -use WebCoso::X; -use utf8; - -my @resources; -my $collections=WebCoso::Collections->new(); -my %resource_to_pipeline; -my %name_to_resource; -my %name_to_collection; - -sub read_scalar { - my ($class,$content,$filename)=@_; - $WebCoso::Config::Helpers::FILENAME=$filename; - $content=<<'EOF'.$content; -package WEBCOSO::CONFIG; -no strict; -WebCoso::Config::Helpers->import(); -EOF - eval $content; - if ($@) { - WebCoso::X::ConfigError->throw( - filename => $filename, - nested => $@, - ); - } - my $symbols=\%WEBCOSO::CONFIG::; - for my $name (keys %$symbols) { - my $object=${*{$symbols->{$name}}{SCALAR}}; - my $type=ref($object); - if ($type eq 'WebCoso::Resource') { - $name_to_resource{$name}=$object; - } - elsif ($type eq 'WebCoso::Collection') { - $name_to_collection{$name}=$object; - } - } - return 1; -} - -sub add_resource { - my ($class,$resource)=@_; - push @resources,$resource; -} - -sub get_all_resources { - return @resources; -} - -sub get_res_by_name { - my ($class,$name)=@_; - - if (exists $name_to_resource{$name}) { - return $name_to_resource{$name}; - } - else { - WebCoso::X::NoSuchResource->throw( - resource => $name - ); - } -} - -sub add_collection { - my ($class,$collection)=@_; - $collections->add_collection($collection); -} - -sub get_collections { - return $collections; -} - -sub get_coll_by_name { - my ($class,$name)=@_; - - if (exists $name_to_collection{$name}) { - return $name_to_collection{$name}; - } - else { - WebCoso::X::NoSuchCollection->throw( - collection => $name - ); - } -} - -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::Collections->new(); - %resource_to_pipeline=(); -} - -package WebCoso::Config::Helpers; -use Path::Class; -use WebCoso::Resource; -use WebCoso::Collection; -use Exporter::Lite; -use vars qw($FILENAME @EXPORT); - -@EXPORT=qw(res coll); - -sub res { - my $dest_filename=pop @_; - my $short_pipeline_name=pop @_; - my @source_files=@_; - - my $config_dir=file($FILENAME)->parent->absolute; - - $dest_filename=file($dest_filename)->absolute($config_dir); - - my @abs_source_files = map { - file($_)->absolute($config_dir); - } @source_files; - - my $pipeline_name="WebCoso::Pipeline::$short_pipeline_name"; - - if (! WebCoso::Pipeline->is_pipeline($pipeline_name)) { - WebCoso::X::NoSuchPipeline->throw( - pipeline => $short_pipeline_name, - ); - }; - - my $resource=WebCoso::Resource->new(); - $resource->set_property(sources=>[@abs_source_files]); - $resource->set_property(destination=>$dest_filename); - - for my $filename (@abs_source_files) { - $resource->set_property( - {filename=>$filename}, - datastream => sub{_open_file($filename)}, - ); - } - - WebCoso::Config->add_resource($resource); - - # brutto! - $resource_to_pipeline{$resource}=$pipeline_name; - - return $resource; -} - -sub coll { - my ($name,$parents,$children,$resources)=@_; - - my $collection=WebCoso::Collection->new({ - name=>$name, - parents=>$parents||[], - children=>$children||[], - resources=>$resources||[], - }); - - return $collection; -} - -sub _open_file { - my ($filename)=@_; - - open my $fh,'<:raw',$filename - or WebCoso::X::OpenError->throw( - filename => $filename, - error => $!); - return $fh; -} - -1; |