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.pm58
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;