package WebCoso::Config;
use strict;
use warnings;
my @resources;
my @collections;
sub read_scalar {
my ($class,$content,$filename)=@_;
$WebCoso::Config::Helpers::FILENAME=$filename;
$content=<<'EOF'.$content;
package WEBCOSO::CONFIG;
WebCoso::Config::Helpers->import();
EOF
eval $content;
if ($@) {
die("Error reading configuration from $filename: $@\n");
}
else {
return 1;
}
}
sub add_resource {
my ($class,$resource)=@_;
push @resources,$resource;
}
sub get_all_resources {
return @resources;
}
sub add_collection {
my ($class,$collection)=@_;
push @collections,$collection;
}
sub get_all_collections {
return @collections;
}
sub clear {
@resources=();
@collections=();
}
package WebCoso::Config::Helpers;
use Path::Class;
use WebCoso::Config::Resource;
use WebCoso::Config::Collection;
use Exporter::Lite;
use vars qw($FILENAME @EXPORT);
@EXPORT=qw(res coll);
sub res {
my $dest_filename=pop @_;
my $pipeline_name=pop @_;
my @source_files=@_;
my $config_dir=file($FILENAME)->parent->absolute;
$dest_filename=file($dest_filename)->absolute($config_dir);
for (@source_files) {
$_=file($_)->absolute($config_dir);
}
WebCoso::Config::Resource->new({
source=>[@source_files],
pipeline=>$pipeline_name,
destination=>$dest_filename
});
}
sub coll {
my ($name,$parents,$children,$resources)=@_;
WebCoso::Config::Collection->new({
name=>$name,
parents=>$parents||[],
children=>$children||[],
resources=>$resources||[],
});
}
1;