use File::Temp;
use WebCoso::Doc::Page;
use WebCoso::Doc::Feed;
class WebCoso {
has $.srcdir;
has $.destdir;
has $!tmpdir = tempdir.IO;
has @!docs;
method get-files($dir,$basename,$ext) {
gather {
for $.srcdir,$!tmpdir -> $base {
my @files = try {
CATCH {
when X::IO { }
}
( $dir ?? $base.child($dir) !! $base ).dir(
test => /$basename \. .+? \. $ext/,
);
} // ();
take $_ for map {
(.basename ~~ /$basename \. (.+?) \. $ext/)[0]
=>
$_
}, @files;
}
}
}
method put-file($dir,$basename,$lang,$ext,$contents) {
my $t = ($dir ?? $!tmpdir.child($dir) !! $!tmpdir);
$t.mkdir;
my $f = $t.child("{$basename}.{$lang}.{$ext}");
$f.spurt($contents);
return $f;
}
method new-page($dir) {
@!docs.push(WebCoso::Doc::Page.new(:$dir,wc=>self));
}
method new-feed($dir) {
@!docs.push(WebCoso::Doc::Feed.new(:$dir,wc=>self));
}
method run() {
.make() for @!docs;
}
}