/**
  * Execute the command.
  *
  * @param  InputInterface  $input
  * @param  OutputInterface $output
  *
  * @return void
  */
 public function execute(InputInterface $input, OutputInterface $output)
 {
     $baseDir = $input->getArgument('base');
     if ($baseDir === null) {
         $baseDir = $this->_projectBase;
     }
     $baseDir = rtrim($baseDir, '/') . '/';
     $extensions = AssetResponse::getExtensions();
     $pattern = '*.' . implode(',*.', $extensions);
     $fileList = $this->globRecursive($baseDir . '{' . $pattern . '}', GLOB_BRACE);
     $hashMap = [];
     $data = '';
     foreach ($fileList as $file) {
         $key = str_replace($baseDir, '', $file);
         $hash = ResourceGenerator::getFileHash($file);
         $hashMap[$key] = $hash;
         $data .= "{$key} = {$hash}\n";
     }
     $outputFile = $input->getOption('output');
     $filename = Path::build($baseDir, $outputFile);
     if (!file_exists($filename) || is_writable($filename)) {
         file_put_contents($filename, $data);
         $output->writeln("Written " . count($fileList) . " file hash keys to " . $filename);
     } else {
         $output->writeln("Failed writing to {$filename}");
     }
 }
 public function assetProvider()
 {
     $attempt = [];
     $resp = new \Packaged\Dispatch\AssetResponse();
     foreach (\Packaged\Dispatch\AssetResponse::getExtensions() as $ext) {
         $attempt[] = [$ext, $resp->assetByExtension($ext)];
     }
     return $attempt;
 }
 public function testCustomType()
 {
     $exts = \Packaged\Dispatch\AssetResponse::getExtensions();
     $this->assertFalse(array_search('mock', $exts));
     $builder = new \Packaged\Dispatch\AssetResponse();
     $this->assertInstanceOf('\\Packaged\\Dispatch\\Assets\\UnknownAsset', $builder->assetByExtension('mock'));
     \Packaged\Dispatch\AssetResponse::addAssetType('mock', new MockAssetType());
     $asset = $builder->assetByExtension('mock');
     $this->assertInstanceOf('\\MockAssetType', $asset);
     $this->assertEquals('mock', $asset->getExtension());
     $this->assertEquals('mock/asset', $asset->getContentType());
 }