diff options
Diffstat (limited to 'php-symfony3-generate-autoloaders.php')
-rwxr-xr-x | php-symfony3-generate-autoloaders.php | 97 |
1 files changed, 79 insertions, 18 deletions
diff --git a/php-symfony3-generate-autoloaders.php b/php-symfony3-generate-autoloaders.php index 9b6f152..3f0fcc3 100755 --- a/php-symfony3-generate-autoloaders.php +++ b/php-symfony3-generate-autoloaders.php @@ -16,7 +16,8 @@ $finder->in(SYMFONY_SOURCE_DIR)->name('composer.json')->sortByName(); foreach ($finder as $composerFile) { $autoloadGenerator = new AutoloadGenerator($composerFile); - echo $autoloadGenerator->getFilename(), "\n"; + echo $autoloadGenerator->getFilename().PHP_EOL; + echo $autoloadGenerator->getDevFilename().PHP_EOL; } @@ -25,6 +26,10 @@ foreach ($finder as $composerFile) { final class AutoloadGenerator { private static $pkgMap = [ + 'cache/integration-tests' => [ + 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', + 'path' => 'Cache/IntegrationTests/autoload.php', + ], 'doctrine/annotations' => [ 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Doctrine/Common/Annotations/autoload.php', @@ -33,6 +38,10 @@ final class AutoloadGenerator { 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Doctrine/Common/Cache/autoload.php', ], + 'doctrine/collections' => [ + 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', + 'path' => 'Doctrine/Common/Collections/autoload.php', + ], 'doctrine/common' => [ 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Doctrine/Common/autoload.php', @@ -45,6 +54,10 @@ final class AutoloadGenerator { 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Doctrine/DBAL/autoload.php', ], + 'doctrine/doctrine-bundle' => [ + 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', + 'path' => 'Doctrine/Bundle/DoctrineBundle/autoload.php', + ], 'doctrine/orm' => [ 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Doctrine/ORM/autoload.php', @@ -69,6 +82,7 @@ final class AutoloadGenerator { 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'phpDocumentor/Reflection/DocBlock/autoload.php', ], + 'predis/predis' => false, 'psr/cache-implementation' => false, 'psr/cache' => [ 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', @@ -90,6 +104,7 @@ final class AutoloadGenerator { 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', 'path' => 'Psr/SimpleCache/autoload.php', ], + 'sensio/framework-extra-bundle' => false, 'symfony/asset' => [ 'prefix' => 'FEDORA_SYMFONY3_DIR', 'path' => 'Component/Asset/autoload.php', @@ -255,7 +270,7 @@ final class AutoloadGenerator { ], 'symfony/security-acl' => [ 'prefix' => 'FEDORA_SYMFONY3_PHP_DIR', - 'path' => 'Component/Security/Acl/autoload.php', + 'path' => 'Symfony/Component/Security/Acl/autoload.php', ], 'symfony/security-bundle' => [ 'prefix' => 'FEDORA_SYMFONY3_DIR', @@ -321,6 +336,10 @@ final class AutoloadGenerator { 'prefix' => 'FEDORA_SYMFONY3_DIR', 'path' => 'Bundle/WebProfilerBundle/autoload.php', ], + 'symfony/workflow' => [ + 'prefix' => 'FEDORA_SYMFONY3_DIR', + 'path' => 'Component/Workflow/autoload.php', + ], 'symfony/yaml' => [ 'prefix' => 'FEDORA_SYMFONY3_DIR', 'path' => 'Component/Yaml/autoload.php', @@ -336,22 +355,39 @@ final class AutoloadGenerator { private $filename = null; + private $devFilename = null; + public function __construct(SplFileInfo $composerFile) { $composerJson = static::composerJson($composerFile); + + // autoload.php $content = static::content( $composerJson, - static::dependencyAutoloaders($composerJson, true), - static::dependencyAutoloaders($composerJson, false) + static::dependencyAutoloaders($composerJson, 'require'), + static::dependencyAutoloaders($composerJson, 'suggest') ); - $this->filename = $composerFile->getPath() . '/autoload.php'; - if (FALSE == file_put_contents($this->filename, $content)) { throw new Exception(sprintf( 'Failed to generate autoload file "%s"', $this->filename )); } + + // autoload-dev.php + $content = static::content( + $composerJson, + static::dependencyAutoloaders($composerJson, 'require-dev'), + [], + true + ); + $this->devFilename = $composerFile->getPath() . '/autoload-dev.php'; + if (FALSE == file_put_contents($this->devFilename, $content)) { + throw new Exception(sprintf( + 'Failed to generate autoload file "%s"', + $this->filename + )); + } } private static function composerJson(SplFileInfo $composerFile) { @@ -370,9 +406,8 @@ final class AutoloadGenerator { return $composerJson; } - private static function dependencyAutoloaders($composerJson, $required) { + private static function dependencyAutoloaders($composerJson, $composerKey) { $dependencyAutoloaders = []; - $composerKey = $required ? 'require' : 'suggest'; if (isset($composerJson[$composerKey])) { $dependencies = array_keys(array_filter( @@ -384,6 +419,15 @@ final class AutoloadGenerator { )); foreach ($dependencies as $pkg) { + // Use Symfony cache component as PSR cache implementation + // for "require-dev" dependency. + if ( + ('require-dev' == $composerKey) + && ('psr/cache-implementation' == $pkg) + ) { + $pkg = 'symfony/cache'; + } + if ($autoloader = self::pkg2Autoload($pkg)) { $dependencyAutoloaders[] = $autoloader; } @@ -413,7 +457,7 @@ final class AutoloadGenerator { : sprintf("%s.'/%s'", $prefix, $path); } - public function content($composerJson, array $dependencyAutoloadersRequired, array $dependencyAutoloadersOptional) { + public function content($composerJson, array $dependencyAutoloadersRequired, array $dependencyAutoloadersOptional = [], $dev = false) { $pkg = explode('/', $composerJson['name'])[1]; $content = <<<AUTOLOAD @@ -426,15 +470,28 @@ final class AutoloadGenerator { AUTOLOAD; // This switch statement handles the "autoload-common" require for sub-sub-modules. - switch ($pkg) { - case 'security-core': - case 'security-csrf': - case 'security-guard': - case 'security-http': - $content .= "require_once dirname(dirname(dirname(__DIR__))).'/autoload-common.php';".PHP_EOL; - break; - default: - $content .= "require_once dirname(dirname(__DIR__)).'/autoload-common.php';".PHP_EOL; + if (!$dev) { + switch ($pkg) { + case 'security-core': + case 'security-csrf': + case 'security-guard': + case 'security-http': + $content .= "require_once dirname(dirname(dirname(__DIR__))).'/autoload-common.php';".PHP_EOL; + break; + default: + $content .= "require_once dirname(dirname(__DIR__)).'/autoload-common.php';".PHP_EOL; + } + } else { + switch ($pkg) { + case 'security-core': + case 'security-csrf': + case 'security-guard': + case 'security-http': + $content .= "require_once dirname(__DIR__).'/autoload.php';".PHP_EOL; + break; + default: + $content .= "require_once __DIR__.'/autoload.php';".PHP_EOL; + } } if (!empty($dependencyAutoloadersRequired)) { @@ -465,4 +522,8 @@ DEPENDENCY_AUTOLOADERS_REQUIRED; public function getFilename() { return $this->filename; } + + public function getDevFilename() { + return $this->devFilename; + } } |