# Cron jobs for the maven repository
# IF CHANGED, make sure you change too https://svn.apache.org/repos/asf/maven/repository-tools/trunk/src/bin/crontab.txt
# try to make then run at pseudo-random hours and minutes to avoid high load
#MAILTO=repository@maven.org
# sync m1 repos and convert to m2
#28 2,14 * * * cd $HOME/bin; ./synchronize-m1.sh
# sync rewrite rules to m1 repo at ibiblio
51 19 * * * cd $HOME/bin; ./synchronize-rewrite-rules-to-ibiblio.sh $HOME/bin/synchronize.properties
# sync m2 repos
16 7,17 * * * cd $HOME/bin/; ./synchronize-inbound.sh
# sync central to cica.es mirror
30 21 * * * cd $HOME/bin; ./synchronize-central-to-cica.sh $HOME/bin/synchronize.properties
# sync central to repo.exist.com mirror
0 23 * * * cd $HOME/bin; ./synchronize-central-to-exist.sh $HOME/bin/synchronize.properties
# sync central to ibiblio
5  1 * * * cd $HOME/bin; ./synchronize-central-to-ibiblio.sh $HOME/bin/synchronize.properties
# run reports
34 2  * * * cd $HOME/reports; ./run.sh
#run on sat morning after all the syncs
22 3 * * 6 cd $HOME/ide-indexer; ./indexer.sh
#pull in rao and nexus.codehaus.org
0 4,8,12,16,20 * * * cd $HOME/bin; ./synchronize-nexus-repos.sh
