Updated update system
[clearscm.git] / bin / cleantmp.pl
index ac26cc8..4b42cbe 100755 (executable)
@@ -46,6 +46,8 @@ $Date: $
    -c|onf <file>:    Config file holding patterns to match (Default: 
                      .../etc/cleantmp.conf)
    -l|ogpath <path>: Path to logfile (Default: /var/log)
+   -a|ppend:         Append to logfile (Default: Noappend)
+   -da|emon          Run in daemon mode (Default: -daemon)
    -s|leep <secs>:   How many seconds to sleep between polls (Default: 60)
 
 =head1 DESCRIPTION
@@ -64,7 +66,7 @@ use Getopt::Long;
 use Pod::Usage;
 use File::Monitor;
 use File::Spec;
-use File::Path;
+use File::Path qw/remove_tree/;
 
 use lib "$FindBin::Bin/../lib";
 
@@ -80,9 +82,10 @@ my %opts = (
   help    => sub { pod2usage(-verbose => 2)},
   verbose => sub { set_verbose },
   debug   => sub { set_debug },
+  daemon  => 1,
   tmp     => File::Spec->tmpdir(),
   conf    => "$FindBin::Bin/../etc/$script.conf",
-  logpath => '/var/log',
+  logpath => '/var/local/log',
   sleep   => 60,
 );
 
@@ -115,7 +118,11 @@ sub FileCreated {
     next if $createdFile =~ /^\./; # Skip all hidden files
 
     for my $pattern (loadConfig) {
+      debug "Processing pattern $pattern";
+
       if ($createdFile =~ /$pattern/) {
+        debug "Matched $createdFile to $pattern";
+
         if (-d "$opts{tmp}/$createdFile") {
           remove_tree ("$opts{tmp}/$createdFile", {error => \my $err});
 
@@ -130,17 +137,16 @@ sub FileCreated {
               } # if
             } # for
           } else {
-            $log->msg(scalar localtime . " $opts{tmp}/$createdFile removed");
+            $log->msg("$opts{tmp}/$createdFile removed");
           } # if
         } else {
           unless (unlink "$opts{tmp}/$createdFile") {
             $log->err("Unable to remove $opts{tmp}/$createdFile - $!");
           } else {
-            $log->msg(scalar localtime . " $opts{tmp}/$createdFile removed");
+            $log->msg("$opts{tmp}/$createdFile removed");
           } # if
         } # if
 
-
         last;
       } # if
     } # for
@@ -149,6 +155,8 @@ sub FileCreated {
   return;
 } # FileCreated
 
+$SIG{USR1} = \&FileCreated;
+
 ## Main
 GetOptions (
   \%opts,
@@ -156,15 +164,26 @@ GetOptions (
   'help',
   'verbose',
   'debug',
+  'daemon!',
   'tmp=s',
   'logpath=s',
   'conf=s',
-  'sleep=i'
+  'sleep=i',
+  'append',
 ) or pod2usage;
 
-$log = Logger->new(path => $opts{logpath});
+$log = Logger->new(
+  path        => $opts{logpath},
+  timestamped => 1,
+  append      => $opts{append},
+);
+
+$log->msg("Starting $FindBin::Script");
 
-$log->msg(scalar localtime . ": Starting $FindBin::Script");
+# First run through whatever junk is in /tmp
+for (glob "$opts{tmp}/*") {
+  FileCreated($_);
+} # for
 
 my $monitor = File::Monitor->new;
 
@@ -176,7 +195,12 @@ $monitor->watch({
 
 set_debug if $DB::OUT;
 
-EnterDaemonMode unless $DB::OUT;
+if ($opts{daemon}) {
+  # Perl complains if we reference $DB::OUT only once
+  no warnings;
+  EnterDaemonMode unless defined $DB::OUT or get_debug;
+  use warnings;
+} # if
 
 while () {
   $monitor->scan;