*/ class FilesystemKeysCommand extends ContainerAwareCommand { /** * {@inheritDoc} */ protected function configure() { $this ->setName('gaufrette:filesystem:keys') ->setDescription('List all the file keys of a filesystem') ->addArgument('filesystem', InputArgument::REQUIRED, 'The filesystem to use') ->addArgument('glob', InputArgument::OPTIONAL, 'An optional glob pattern') ->setHelp(<<gaufrette:filesystem:list command lists all the file keys of the specified filesystem: ./app/console gaufrette:filesystem:list my_filesystem You can also optionaly specify a glob pattern to filter the results: ./app/console gaufrette:filesystem:list my_filesystem media_* EOT ); } /** * {@inheritDoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $filesystem = $input->getArgument('filesystem'); $glob = $input->getArgument('glob'); $container = $this->getContainer(); $serviceId = sprintf('gaufrette.%s_filesystem', $filesystem); if (!$container->has($serviceId)) { throw new \RuntimeException(sprintf('There is no \'%s\' filesystem defined.', $filesystem)); } $filesystem = $container->get($serviceId); $keys = $filesystem->keys(); if (!empty($glob)) { $glob = new Glob($glob); $keys = $glob->filter($keys); } $count = count($keys); $output->writeln( sprintf( 'Bellow %s the %s key%s that where found:', $count > 1 ? 'are' : 'is', $count, $count > 1 ? 's': '' ) ); $output->setDecorated(true); foreach ($keys as $key) { $output->writeln(' - ' . $key . ''); } } }