#! @PERL@ -w # vim:syntax=perl use strict; use lib '@LR_PERL5LIBDIR@'; use Locale::TextDomain qw/lire/; use Lire::Config; use Lire::Error qw/ an_error_occured missing_argument_usage /; use Lire::PluginManager; use Lire::DlfStore; Lire::Config->init(); Lire::PluginManager->register_default_plugins(); my ( $period, $store_path, $time ) = @ARGV; my $usage = __( "Usage: lr_cron \n" ); die ( missing_argument_usage( 'period' ), $usage ) unless defined $period; die ( __x( "Invalid period '{period}'. Should be one of hourly, daily, weekly, monthly or yearly.\n", 'period' => $period ), $usage ) unless $period =~ /^(hourly|daily|weekly|monthly|yearly)$/; die ( missing_argument_usage( 'store' ), $usage ) unless defined $store_path; # Since lr_cron is run once the period is over, we need to # offset it. $time ||= time(); if ( $period eq 'hourly' ) { $time -= 3600; } else { $time -= 86400; } eval { my $store = Lire::DlfStore->open( $store_path, 1 ); foreach my $job ( @{ $store->import_jobs() } ) { $job->run( $store, $time ) if $job->period() eq $period; } foreach my $job ( @{ $store->report_jobs() } ) { $job->run( $store, $period, $time ); } $store->clean_streams( $time ) if $period eq 'daily'; $store->close(); }; die an_error_occured( $@ ) if $@; exit( 0 ); __END__ =pod =head1 NAME lr_cron - run the perodical jobs configured in a DlfStore. =head1 SYNOPSIS B I I =head1 DESCRIPTION B is designed to be called in a crontab(5) entry. I should be "hourly", "daily", "weekly", "monthly" or "yearly". I should be the full path name of the DLF Store. lire(1) should be used to configure periodical jobs in the store. To run jobs as scheduled by lire(1), you will need to setup cron jobs. For each schedule you use, you should configure a cron job to be executed according to that period. Here is a crontab(5) entry that will make sure that all possible schedules are supported in the /home/flacoste/myStore DLF store: 05 * * * * lr_run lr_cron hourly /home/flacoste/myStore 15 01 * * * lr_run lr_cron daily /home/flacoste/myStore 15 02 * * 02 lr_run lr_cron weekly /home/flacoste/myStore 15 03 01 * * lr_run lr_cron monthly /home/flacoste/myStore 15 04 01 01 * lr_run lr_cron yearly /home/flacoste/myStore . =head1 SEE ALSO lire(1) =head1 AUTHOR Francis J. Lacoste =head1 VERSION $Id: lr_cron.in,v 1.37 2006/07/23 13:16:32 vanbaal Exp $ =head1 COPYRIGHT Copyright (C) 2004 Stichting LogReport Foundation LogReport@LogReport.org This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see COPYING); if not, check with http://www.gnu.org/copyleft/gpl.html. =cut Local Variables: mode: cperl End: