diff options
Diffstat (limited to 'lib/WebCoso/Maker.pm')
-rw-r--r-- | lib/WebCoso/Maker.pm | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/lib/WebCoso/Maker.pm b/lib/WebCoso/Maker.pm index 02e1a18..bcf759b 100644 --- a/lib/WebCoso/Maker.pm +++ b/lib/WebCoso/Maker.pm @@ -24,40 +24,43 @@ role WebCoso::Maker[$from,$to] { return $.wc.load-deps($.dir,$.basename,$to); } - method set-deps(%deps) { - $.wc.save-deps($.dir,$.basename,$to,%deps); + method set-deps($deps) { + $.wc.save-deps($.dir,$.basename,$to,$deps); } method make() { say "Maker[$from,$to]($.dir/$.basename)::make"; - my %srcs = $.src-files(); - my %dsts = $.dest-files(); - my %deps = $.dep-files(); + 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}"; + say "Maker[$from,$to]($.dir/$.basename)::make from {$srcs.perl} and {$deps.perl} to {$dsts.perl}"; - for %srcs.keys -> $lang { - my $src = %srcs{$lang}; - my $dst = %dsts{$lang}; - my @deps = %deps{$lang} // (); + for $srcs.langs -> $lang { + my $src = $srcs.for-lang($lang)[0]; + my $dst = $dsts.for-lang($lang)[0]; + my @deps = $deps.for-lang($lang); say "Maker[$from,$to]($.dir/$.basename)::make lang $lang"; say "Maker[$from,$to]($.dir/$.basename)::make dst modified {$dst ?? $dst.modified !! 'not-there'} src modified {$src.modified} deps modified {@deps».modified}"; - next if $dst and not ($dst.modified <= - all($src.modified,@deps».modified.flat)); + next if $dst and $dst.modified >= + all($src.modified,@deps».modified.flat); say "Maker[$from,$to]($.dir/$.basename)::make processing $lang"; my ($processed-contents,@new_deps) = self.process-contents( $src, ); - %dsts{$lang} = $.wc.put-file($.dir,$.basename,$lang,$to, - $processed-contents); - %deps{$lang} = @new_deps + $dsts.set-for-lang( + $lang, + $.wc.put-file($.dir,$.basename,$lang,$to, + $processed-contents), + ); + $deps.set-for-lang($lang,@new_deps) if @new_deps; } - $.set-deps(%deps); + $.set-deps($deps); - return %dsts; + return $dsts; } } |