aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso/Config.pm
blob: 3fbc597f5ba5456f7fa7955a36a5d3260409e62f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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;
no strict;
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;