summaryrefslogtreecommitdiff
path: root/lib/WebCoso.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso.pm')
-rw-r--r--lib/WebCoso.pm30
1 files changed, 25 insertions, 5 deletions
diff --git a/lib/WebCoso.pm b/lib/WebCoso.pm
index a990b67..dbbfda4 100644
--- a/lib/WebCoso.pm
+++ b/lib/WebCoso.pm
@@ -1,5 +1,7 @@
# -*- mode: perl6 -*-
use File::Temp;
+use JSON::Fast;
+use WebCoso::File;
use WebCoso::Doc::Page;
use WebCoso::Doc::Feed;
@@ -9,6 +11,20 @@ class WebCoso {
has $!tmpdir = tempdir.IO;
has %!docs;
+ 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;
+ }
+
+ method save-deps($dir,$basename,$ext,%new-deps is copy) {
+ my %deps = try { from-json($.srcdir.child('deps.json').IO.slurp) } // {};
+ %new-deps.values».=path;
+ %deps{$basename}{$ext} = %new-deps;
+ $.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 {
@@ -24,13 +40,17 @@ class WebCoso {
say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-src-files($dir,$basename,$ext) files = {@files.perl}";
return (
map {
- (.basename ~~ /$basename \. (.+?) \. $ext/)[0]
- =>
- $_
+ my $lang = (.basename ~~ /$basename \. (.+?) \. $ext/)[0].Str;
+ $lang => WebCoso::File.new(:$lang,path=>$_)
}, @files
).values;
}
+ method get-file($dir,$path) {
+ say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-file($dir,$path)";
+ return WebCoso::File.new($.srcdir.child($dir).child($path));
+ }
+
method get-made-files($dir,$basename,$ext) {
say "WebCoso($.srcdir,$.destdir,$!tmpdir)::get-made-files($dir,$basename,$ext)";
if %!docs{$dir}{$basename} -> $doc {
@@ -51,8 +71,8 @@ class WebCoso {
say "WebCoso($.srcdir,$.destdir,$!tmpdir)::put-file($dir,$basename,$lang,$ext)";
my $t = ($dir ?? $!tmpdir.child($dir) !! $!tmpdir);
$t.mkdir;
- my $f = $t.child("{$basename}.{$lang}.{$ext}");
- $f.spurt($contents);
+ my $f = WebCoso::File.new(:$lang,path=>$t.child("{$basename}.{$lang}.{$ext}"));
+ $f.contents($contents);
return $f;
}