aboutsummaryrefslogtreecommitdiff
path: root/lib/WebCoso
diff options
context:
space:
mode:
Diffstat (limited to 'lib/WebCoso')
-rw-r--r--lib/WebCoso/Cleaner.pm22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/WebCoso/Cleaner.pm b/lib/WebCoso/Cleaner.pm
new file mode 100644
index 0000000..e9f9dcf
--- /dev/null
+++ b/lib/WebCoso/Cleaner.pm
@@ -0,0 +1,22 @@
+package WebCoso::Cleaner;
+use strict;
+use warnings;
+use File::Next;
+use Path::Class;
+use WebCoso::Common;
+
+sub clean {
+ my %to_keep;
+ @to_keep{WebCoso::Common::keepEarliest(WebCoso::Common::fromTo($WebCoso::Common::SRCPATH,{%WebCoso::Common::docfiles,dirs=>sub{!m{^(_webcoso|\.svn)$}}}))}=();
+ @to_keep{WebCoso::Common::fromTo($WebCoso::Common::SRCPATH,{files=>sub{!m{^document\.}},dirs=>sub{!m{^(_webcoso|\.svn)$}}})}=();
+
+ my $iter=File::Next::files({descend_filter=>sub{!m{^\.svn$}}},$WebCoso::Common::SRCPATH,$WebCoso::Common::DSTPATH);
+ while (defined (my $file=$iter->())) {
+ next if exists $to_keep{$file};
+ unlink $file;
+ }
+ dir($WebCoso::Common::DSTPATH)->rmtree;
+ dir($WebCoso::Common::SRCPATH,'_webcoso')->rmtree;
+}
+
+1;