diff options
author | dakkar <dakkar@thenautilus.net> | 2015-09-11 15:32:51 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2015-09-11 15:32:51 +0100 |
commit | df354d91e7e315b839d5c292e386e64ca339cb07 (patch) | |
tree | 476314347374acc122848a6d0202fb137aba225f /lib/WebCoso.pm | |
parent | fix deps out-of-date comparison (diff) | |
download | WebCoso-p6-df354d91e7e315b839d5c292e386e64ca339cb07.tar.gz WebCoso-p6-df354d91e7e315b839d5c292e386e64ca339cb07.tar.bz2 WebCoso-p6-df354d91e7e315b839d5c292e386e64ca339cb07.zip |
filesets! don't work
I think I'm trying to be too clever, merging "these files make up a
document, a file per language" with "these files are needed to build a
result file in a certain language". Those should probably be separate
classes.
Diffstat (limited to 'lib/WebCoso.pm')
-rw-r--r-- | lib/WebCoso.pm | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm index dbbfda4..d734bd8 100644 --- a/lib/WebCoso.pm +++ b/lib/WebCoso.pm @@ -2,6 +2,7 @@ use File::Temp; use JSON::Fast; use WebCoso::File; +use WebCoso::FileSet; use WebCoso::Doc::Page; use WebCoso::Doc::Feed; @@ -13,37 +14,28 @@ class WebCoso { method load-deps($dir,$basename,$ext) { my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {}; - my $ret = %deps{$basename}{$ext} // {}; - for $ret.values -> $f is rw { $f = WebCoso::File.new($f) }; - return $ret; + my %ret = %deps{$dir}{$basename}{$ext} // {}; + return WebCoso::FileSet.new(files-hash=>%ret); } - method save-deps($dir,$basename,$ext,%new-deps is copy) { + method save-deps($dir,$basename,$ext,$new-deps) { my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {}; - %new-deps.values».=path; - %deps{$basename}{$ext} = %new-deps; + %deps{$dir}{$basename}{$ext} = $new-deps.export-hash; $.srcdir.child('deps.json').IO.spurt(to-json(%deps)); } method get-src-files($dir,$basename,$ext) { say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext)"; - my @files = gather { + my @filesets = (gather { for $.srcdir,$!tmpdir -> $base { - take $_ for try { - CATCH { when X::IO { } } - ( $dir ?? $base.child($dir) !! $base ).dir( - test => /$basename \. .+? \. $ext/, - ) - } // (); + take WebCoso::FileSet.new( + path => ( $dir ?? $base.child($dir) !! $base ), + :$basename, :$ext, + ); } - } - say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@files.perl}"; - return ( - map { - my $lang = (.basename ~~ /$basename \. (.+?) \. $ext/)[0].Str; - $lang => WebCoso::File.new(:$lang,path=>$_) - }, @files - ).values; + }).values; + say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@filesets».files}"; + return @filesets.reduce({$^a.merged-with($^b)}); } method get-file($dir,$path) { @@ -62,9 +54,9 @@ class WebCoso { method get-files($dir,$basename,$ext,:$make=True) { say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-files($dir,$basename,$ext,$make)"; - my %src = self.get-src-files($dir,$basename,$ext); - my %made = ( $make ?? self.get-made-files($dir,$basename,$ext) !! () ); - return flat %src,%made; + my $src = self.get-src-files($dir,$basename,$ext); + my $made = ( $make ?? self.get-made-files($dir,$basename,$ext) !! () ); + return $src.merged-with($made); } method put-file($dir,$basename,$lang,$ext,$contents) { |