/** * Main function * * @param string[] $argv Program parameters * * @return void * @throws Exception */ function main($argv) { $params = parseArgs($argv); applyConfigOverrides($params); if (empty($params['file']) || empty($params['source'])) { echo <<<EOT Usage: {$argv['0']} --file=... --source=... [...] Parameters: --file The file or wildcard pattern of files of records --source Source ID --verbose Enable verbose output --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); $manager->loadFromFile($params['source'], $params['file']); } catch (Exception $e) { releaseLock($lockhandle); throw $e; } releaseLock($lockhandle); }