diff options
author | dakkar <dakkar@thenautilus.net> | 2015-09-06 15:27:50 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2015-09-06 15:27:50 +0100 |
commit | 3f439cd25065e13ac487efc68538f56a6b5f8f1e (patch) | |
tree | 860f8152d7476e0bdd4c8393b817c920ae6504cc /lib/WebCoso/Maker.pm | |
parent | random flailing for deps (diff) | |
download | WebCoso-p6-3f439cd25065e13ac487efc68538f56a6b5f8f1e.tar.gz WebCoso-p6-3f439cd25065e13ac487efc68538f56a6b5f8f1e.tar.bz2 WebCoso-p6-3f439cd25065e13ac487efc68538f56a6b5f8f1e.zip |
deps almost working
Diffstat (limited to 'lib/WebCoso/Maker.pm')
-rw-r--r-- | lib/WebCoso/Maker.pm | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/lib/WebCoso/Maker.pm b/lib/WebCoso/Maker.pm index 5aae4f8..d5436df 100644 --- a/lib/WebCoso/Maker.pm +++ b/lib/WebCoso/Maker.pm @@ -4,16 +4,44 @@ role WebCoso::Maker[$from,$to] { has $.basename; has $.dir; - method process-contents($from-contents) { ... } + method process-contents(:$src,:@deps) { ... } + + method dest-files() { + say "Maker[$from,$to]($.dir/$.basename)::dest-files"; + return $.wc.get-files($.dir,$.basename,$to,:!make); + } + + method src-files() { + say "Maker[$from,$to]($.dir/$.basename)::src-files"; + return $.wc.get-files($.dir,$.basename,$from); + } + + method dep-files() { + return Hash; + } + + method make() { + say "Maker[$from,$to]($.dir/$.basename)::make"; + my %srcs = $.src-files(); + my %dsts = $.dest-files(); + my %deps = $.dep-files(); + + say "Maker[$from,$to]($.dir/$.basename)::make from {%srcs.perl} and {%deps.perl} to {%dsts.perl}"; - method get-files() { - my %srcs = $.wc.get-files($.dir,$.basename,$from); - my %dsts = $.wc.get-files($.dir,$.basename,$to); for %srcs.keys -> $lang { my $src = %srcs{$lang}; - next if %dsts{$lang} and - %dsts{$lang}.modified after $src.modified; - my $processed-contents = self.process-contents($src.slurp); + my $dst = %dsts{$lang}; + my @deps = %deps{$lang} // (); + say "Maker[$from,$to]($.dir/$.basename)::make lang $lang"; + next if $dst and $dst.modified after + all($src.modified,@depsĀ».modified.flat); + + say "Maker[$from,$to]($.dir/$.basename)::make processing $lang"; + my $processed-contents = self.process-contents( + src => $src.slurp, + deps => @depsĀ».slurp, + ); + %dsts{$lang} = $.wc.put-file($.dir,$.basename,$lang,$to, $processed-contents) } |