From 3f439cd25065e13ac487efc68538f56a6b5f8f1e Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 6 Sep 2015 15:27:50 +0100 Subject: deps almost working --- lib/WebCoso/Maker.pm | 42 +++++++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 7 deletions(-) (limited to 'lib/WebCoso/Maker.pm') 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) } -- cgit v1.2.3