/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $basePath = 'app/jarves/'; $fs = new Filesystem(); if (!$fs->exists($basePath)) { $output->writeln(sprintf('<error>No website data in %s</error>', $basePath)); return; } $files = $this->import($input, $output); if (!$input->getOption('watch')) { $output->writeln("<info>Done.</info>"); } else { do { $output->writeln("<info>Done. Wait for changes ...</info>"); while (true) { sleep(1); clearstatcache(); foreach ($files as $path => $mtime) { if ($mtime !== filemtime($path)) { $output->writeln(sprintf("<info>%s changed. Reimport</info>", $path)); break 2; } } } try { $files = $this->import($input, $output); } catch (\Exception $e) { foreach ($files as $path => $mtime) { $files[$path] = filemtime($path); } $output->writeln("<error>Failed</error>"); echo Debug::toString($e); $output->writeln("<info>Waiting for changes ...</info>"); } } while (true); } }