blob: 77370eb81fb5e7de9919621acffb88e2db8b58f8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
use v6.d;
use Katana::Image::Elem;
unit module Katana::Walk::Dir:api<1>;
sub dist-dirs(Str \dist-dir --> List) { dist-dir <<~>> </large /blur /thumb> }
sub dir-ensure(Str \dist-dir) is export {
mkdir dist-dir unless dist-dir.IO.d;
mkdir $_ unless .IO.d for dist-dirs dist-dir;
}
sub dir-walk(Str \dir, :&onFile, :&onDir = sub (\dir) {} ) is export {
return unless dir.IO.d;
for dir(dir) -> $fh {
given $fh {
when .d { dir-walk $fh.path, :&onFile, :&onDir }
default { &onFile($fh.path) }
}
}
&onDir(dir);
}
sub dir-cleanup-nonexistent (Str \dist-dir, @images) is export {
my $basenames = set @images.map:{ $_.basename };
dir-walk dist-dir,
onFile => sub (\file) {
unlink file if file.IO.basename ∉ $basenames
};
}
sub dir-make-mr-proper(Str \dist-dir) is export {
dir-walk dist-dir,
onFile => sub (\file) { unlink file },
onDir => sub (\dir) { rmdir dir };
}
|