/** * Main function * * @param string[] $argv Program parameters * * @return void * @throws Exception */ function main($argv) { $params = parseArgs($argv); applyConfigOverrides($params); if (empty($params['source']) || !is_string($params['source'])) { echo <<<EOT Usage: {$argv['0']} --source=... [...] Parameters: --source Repository id ('*' for all, separate multiple sources with commas) --exclude Repository id's to exclude when using '*' for source (separate multiple sources with commas) --from Override harvesting start date --until Override harvesting end date --all Harvest from beginning (overrides --from) --verbose Enable verbose output --override Override initial resumption token (e.g. to resume failed connection) --reharvest[=date] This is a full reharvest, delete all records that were not received during the harvesting (or were modified before [date]). Implies --all. --config.section.name=value Set configuration directive to given value overriding any setting in recordmanager.ini --lockfile=file Use a lock file to avoid executing the command multiple times in parallel (useful when running from crontab) EOT; exit(1); } $lockfile = isset($params['lockfile']) ? $params['lockfile'] : ''; $lockhandle = false; try { if (($lockhandle = acquireLock($lockfile)) === false) { die; } $manager = new RecordManager(true, isset($params['verbose']) ? $params['verbose'] : false); $from = isset($params['from']) ? $params['from'] : null; if (isset($params['all']) || isset($params['reharvest'])) { $from = '-'; } foreach (explode(',', $params['source']) as $source) { $manager->harvest($source, $from, isset($params['until']) ? $params['until'] : null, isset($params['override']) ? urldecode($params['override']) : '', isset($params['exclude']) ? $params['exclude'] : null, isset($params['reharvest']) ? $params['reharvest'] : ''); } } catch (Exception $e) { releaseLock($lockhandle); throw $e; } releaseLock($lockhandle); }