aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso/Config.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso/Config.pm')
-rw-r--r--lib/WebCoso/Config.pm176
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;