diff options
Diffstat (limited to 'lib/WebCoso/Config.pm')
-rw-r--r-- | lib/WebCoso/Config.pm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/WebCoso/Config.pm b/lib/WebCoso/Config.pm new file mode 100644 index 0000000..68968da --- /dev/null +++ b/lib/WebCoso/Config.pm @@ -0,0 +1,58 @@ +package WebCoso::Config; +use strict; +use warnings; +use vars '@resources'; + +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; +} + +package WebCoso::Config::Helpers; +use Path::Class; +use WebCoso::Config::Resource; +use Exporter::Lite; +use vars qw($FILENAME @EXPORT); + +@EXPORT=qw(res); + +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 + }); +} + +1; |