# -*- mode: perl6 -*- role WebCoso::Maker[$from,$to] { has $.wc; has $.basename; has $.dir; 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}"; for %srcs.keys -> $lang { my $src = %srcs{$lang}; my $dst = %dsts{$lang}; my @deps = %deps{$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}"; 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) } return %dsts; } }