summaryrefslogtreecommitdiffstats
path: root/php-symfony3-generate-autoloaders.php
diff options
context:
space:
mode:
authorRemi Collet <remi@remirepo.net>2019-11-05 09:28:58 +0100
committerRemi Collet <remi@remirepo.net>2019-11-05 09:28:58 +0100
commit243966ba67caaeb492e4a372b1e60b9a62b955e6 (patch)
treef3b9aa9814b9d1492b53431c13003dd1c61b8eb5 /php-symfony3-generate-autoloaders.php
parent49d901f7083ac527f007e93b4520f42327881bcd (diff)
- update to 3.4.31
- raise dependency on twig 1.41 - raise dependency on egulias/email-validator 2.1.10 - raise dependency on doctrine/annotations 1.7 * Sat Sep 14 2019 Shawn Iwinski <shawn.iwinski@gmail.com> - 3.4.30-2 - Update autoloader generator to include self PSR-0, PSR-4, files, and classmap
Diffstat (limited to 'php-symfony3-generate-autoloaders.php')
-rwxr-xr-xphp-symfony3-generate-autoloaders.php112
1 files changed, 103 insertions, 9 deletions
diff --git a/php-symfony3-generate-autoloaders.php b/php-symfony3-generate-autoloaders.php
index 0508257..90d2c50 100755
--- a/php-symfony3-generate-autoloaders.php
+++ b/php-symfony3-generate-autoloaders.php
@@ -10,12 +10,18 @@ $autoloader->register();
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
+use Symfony\Component\Process\Exception\ProcessFailedException;
+use Symfony\Component\Process\Process;
$finder = new Finder();
-$finder->in(SYMFONY_SOURCE_DIR)->name('composer.json')->sortByName();
+$finder
+ ->in(SYMFONY_SOURCE_DIR)
+ ->notPath('Tests')
+ ->name('composer.json')
+ ->sortByName();
foreach ($finder as $composerFile) {
- fprintf(STDERR, "\tgenerate %s\n", $composerFile);
+ fprintf(STDERR, 'generating autoloader from %s'.PHP_EOL, $composerFile);
$autoloadGenerator = new AutoloadGenerator($composerFile);
echo $autoloadGenerator->getFilename().PHP_EOL;
echo $autoloadGenerator->getDevFilename().PHP_EOL;
@@ -65,7 +71,7 @@ final class AutoloadGenerator {
],
'egulias/email-validator' => [
'prefix' => 'FEDORA_SYMFONY3_PHP_DIR',
- 'path' => 'Egulias/EmailValidator/autoload.php',
+ 'path' => 'Egulias/EmailValidator2/autoload.php',
],
'fig/link-util' => [
'prefix' => 'FEDORA_SYMFONY3_PHP_DIR',
@@ -366,11 +372,17 @@ final class AutoloadGenerator {
private $devFilename = null;
public function __construct(SplFileInfo $composerFile) {
+ $composerPath = $composerFile->getPath();
$composerJson = static::composerJson($composerFile);
// autoload.php
$content = static::content(
- $composerJson,
+ $composerPath,
+ $composerJson['name'],
+ isset($composerJson['autoload']['psr-0']) ? $composerJson['autoload']['psr-0'] : [],
+ isset($composerJson['autoload']['psr-4']) ? $composerJson['autoload']['psr-4'] : [],
+ isset($composerJson['autoload']['files']) ? $composerJson['autoload']['files'] : [],
+ isset($composerJson['autoload']['classmap']) ? $composerJson['autoload']['classmap'] : [],
static::dependencyAutoloaders($composerJson, 'require'),
static::dependencyAutoloaders($composerJson, 'suggest')
);
@@ -384,7 +396,12 @@ final class AutoloadGenerator {
// autoload-dev.php
$content = static::content(
- $composerJson,
+ $composerPath,
+ $composerJson['name'],
+ [],
+ [],
+ [],
+ [],
static::dependencyAutoloaders($composerJson, 'require-dev'),
[],
true
@@ -465,8 +482,18 @@ final class AutoloadGenerator {
: sprintf("%s.'/%s'", $prefix, $path);
}
- public function content($composerJson, array $dependencyAutoloadersRequired, array $dependencyAutoloadersOptional = [], $dev = false) {
- $pkg = explode('/', $composerJson['name'])[1];
+ public function content(
+ $path,
+ $name,
+ array $psr0,
+ array $psr4,
+ array $files,
+ array $classmap,
+ array $dependencyAutoloadersRequired,
+ array $dependencyAutoloadersOptional,
+ $dev = false
+ ) {
+ $pkg = explode('/', $name)[1];
$content = <<<AUTOLOAD
<?php
@@ -502,22 +529,89 @@ AUTOLOAD;
}
}
+ // PSR-0
+ if (!empty($psr0)) {
+ $content .= PHP_EOL.'// Self PSR-0'.PHP_EOL;
+
+ foreach ($psr0 as $namespace => $directory) {
+ $content .= sprintf(
+ "\\Fedora\\Autoloader\\Autoload::addPsr0('%s', %s, true);".PHP_EOL,
+ str_replace('\\', '\\\\', $namespace),
+ $directory ? "'$directory'" : '__DIR__'
+ );
+ }
+ }
+
+ // PSR-4
+ if (!empty($psr4)) {
+ $content .= PHP_EOL.'// Self PSR-4'.PHP_EOL;
+
+ foreach ($psr4 as $namespace => $directory) {
+ $content .= sprintf(
+ "\\Fedora\\Autoloader\\Autoload::addPsr4('%s', %s, true);".PHP_EOL,
+ str_replace('\\', '\\\\', $namespace),
+ $directory ? "'$directory'" : '__DIR__'
+ );
+ }
+ }
+
+ // Files
+ if (!empty($files)) {
+ $content .= PHP_EOL.'// Self files'.PHP_EOL;
+
+ foreach ($files as $file) {
+ $content .= sprintf(
+ "require_once __DIR__.'/$file';".PHP_EOL,
+ $file
+ );
+ }
+ }
+
+ // Classmap
+ if (!empty($classmap)) {
+ $cmd = array_merge(
+ [
+ 'phpab',
+ '--template', 'fedora',
+ '--output', 'autoload.classmap.php',
+ ],
+ $classmap
+ );
+
+ $process = new Process($cmd, $path);
+ $process->run();
+
+ if (!$process->isSuccessful()) {
+ throw new ProcessFailedException($process);
+ }
+
+ $content .= <<<SELF_CLASSMAP
+
+// Self classmap
+require_once __DIR__.'/autoload.classmap.php';
+
+SELF_CLASSMAP;
+ }
+
+ // Required dependencies
if (!empty($dependencyAutoloadersRequired)) {
$dependencyAutoloadersRequiredString = implode(",\n ", $dependencyAutoloadersRequired);
$content .= <<<DEPENDENCY_AUTOLOADERS_REQUIRED
-
+// Required dependencies
\Fedora\Autoloader\Dependencies::required([
$dependencyAutoloadersRequiredString
]);
+
DEPENDENCY_AUTOLOADERS_REQUIRED;
}
+ // Optional dependencies
if (!empty($dependencyAutoloadersOptional)) {
$dependencyAutoloadersOptionalString = implode(",\n ", $dependencyAutoloadersOptional);
$content .= <<<DEPENDENCY_AUTOLOADERS_REQUIRED
-
+// Optional dependencies
\Fedora\Autoloader\Dependencies::optional([
$dependencyAutoloadersOptionalString
]);