defaultCacheFolder = $defaultCacheFolder; parent::__construct(); } /** * @throws InvalidArgumentException */ protected function configure(): void { $this ->setName('browscap:check-update') ->setDescription('Checks if an updated INI file is available.') ->addOption( 'cache', 'c', InputOption::VALUE_OPTIONAL, 'Where the cache files are located', $this->defaultCacheFolder ); } /** * @throws InvalidArgumentException * @throws \InvalidArgumentException */ protected function execute(InputInterface $input, OutputInterface $output): int { $logger = LoggerHelper::createDefaultLogger($output); $cacheOption = $input->getOption('cache'); assert(is_string($cacheOption)); $adapter = new LocalFilesystemAdapter($cacheOption); $filesystem = new Filesystem($adapter); $cache = new SimpleCache( new Flysystem($filesystem) ); $logger->debug('started checking for new version of remote file'); $browscap = new BrowscapUpdater($cache, $logger); try { $browscap->checkUpdate(); } catch (NoCachedVersionException $e) { return self::NO_CACHED_VERSION; } catch (NoNewVersionException $e) { // no newer version available $logger->info('there is no newer version available'); return self::NO_NEWER_VERSION; } catch (ErrorCachedVersionException $e) { $logger->info($e); return self::ERROR_READING_CACHE; } catch (FetcherException $e) { $logger->info($e); return self::ERROR_READING_REMOTE_FILE; } catch (Throwable $e) { $logger->info($e); return self::GENERIC_ERROR; } $logger->debug('finished checking for new version of remote file'); return self::SUCCESS; } }