예제 #1
0
 public function fire(Factory $viewFactory)
 {
     //add config templates directory to view locations
     $viewFactory->addLocation(realpath(__DIR__ . '/ConfigMigrations/templates'));
     if (($destPath = $this->option('dest-path')) === null) {
         $destPath = 'config';
     }
     if (($author = $this->argument('author')) === null) {
         throw new InvalidArgumentException('Missing author option');
     }
     if (($sourceFilePath = $this->option('source-file')) === null) {
         $sourceFilePath = 'config/doctrine.php';
     }
     $destPath = realpath($destPath);
     if (!is_dir($destPath)) {
         mkdir($destPath, 0777, true);
     }
     if (!is_writable($destPath)) {
         throw new InvalidArgumentException(sprintf("Configuration destination directory '<info>%s</info>' does not have write permissions.", $destPath));
     }
     $destFilePath = $destPath . '/doctrine.generated.php';
     $originalSourceFilePath = $sourceFilePath;
     $sourceFilePath = realPath($sourceFilePath);
     if (!file_exists($sourceFilePath)) {
         throw new InvalidArgumentException(sprintf("Source file at path '<info>%s</info>' does not exist.", $originalSourceFilePath));
     }
     $sourceArrayConfig = (include $sourceFilePath);
     //TODO make this relative
     switch ($author) {
         case 'atrauzzi':
             //$convertedConfigString = $this->convertAtrauzzi($sourceArrayConfig, $viewFactory);
             break;
         case 'mitchellvanw':
             $convertedConfigString = $this->convertMitchell($sourceArrayConfig, $viewFactory);
             break;
         default:
             throw new InvalidArgumentException('Author provided was not a valid choice.');
     }
     file_put_contents($destFilePath, '<?php ' . $convertedConfigString);
     $this->info('Conversion successful. File generated at ' . $destFilePath);
 }