|
10 | 10 | use Webforge\Common\System\System;
|
11 | 11 | use Webforge\Common\JS\JSONConverter;
|
12 | 12 | use Webforge\Code\Generator\ComposerClassFileMapper;
|
| 13 | +use Webforge\Common\System\Dir; |
13 | 14 |
|
14 | 15 | use Webforge\Doctrine\Compiler\Compiler;
|
15 | 16 | use Webforge\Doctrine\Compiler\EntityGenerator;
|
|
18 | 19 | use Webforge\Doctrine\Compiler\EntityMappingGenerator;
|
19 | 20 | use Webforge\Doctrine\Compiler\Inflector;
|
20 | 21 |
|
| 22 | + |
21 | 23 | class CompileCommand extends \Webforge\Console\Command\CommandAdapter {
|
22 | 24 |
|
23 | 25 | protected $name = 'orm:compile';
|
@@ -57,18 +59,42 @@ public function doExecute(CommandInput $input, CommandOutput $output, CommandInt
|
57 | 59 |
|
58 | 60 | $target = $input->getDirectory('psr0target');
|
59 | 61 |
|
60 |
| - $this->getCompiler()->compileModel($jsonModel, $target, $flags = Compiler::COMPILED_ENTITIES | Compiler::RECOMPILE); |
| 62 | + $this->getCompiler($target)->compileModel($jsonModel, $target, $flags = Compiler::COMPILED_ENTITIES | Compiler::RECOMPILE); |
61 | 63 |
|
62 | 64 | $output->ok('The model was successful compiled.');
|
63 | 65 | return 0;
|
64 | 66 | }
|
65 | 67 |
|
66 |
| - protected function getCompiler() { |
| 68 | + protected function getCompiler(Dir $target) { |
67 | 69 | if (!isset($this->compiler)) {
|
68 | 70 | $webforge = $this->getWebforge();
|
| 71 | + $container = $GLOBALS['env']['container']; |
| 72 | + |
| 73 | + /* augment autoloader with autoloading information from the calling package */ |
| 74 | + $package = $webforge->getPackageRegistry()->findByDirectory($target); |
| 75 | + |
| 76 | + if ($package && $package->getIdentifier() != $container->getPackage()->getIdentifier()) { |
| 77 | + $dir = $package->getDirectory('vendor')->sub('composer'); |
| 78 | + $loader = $container->getAutoLoader(); |
| 79 | + |
| 80 | + $map = require (string) $dir->getFile('autoload_namespaces.php'); |
| 81 | + foreach ($map as $namespace => $path) { |
| 82 | + $loader->set($namespace, $path); |
| 83 | + } |
| 84 | + |
| 85 | + $map = require (string) $dir->getFile('autoload_psr4.php'); |
| 86 | + foreach ($map as $namespace => $path) { |
| 87 | + $loader->setPsr4($namespace, $path); |
| 88 | + } |
| 89 | + |
| 90 | + $classMap = require $dir->getFile('autoload_classmap.php'); |
| 91 | + if ($classMap) { |
| 92 | + $loader->addClassMap($classMap); |
| 93 | + } |
| 94 | + } |
69 | 95 |
|
70 | 96 | $webforge->setClassFileMapper(
|
71 |
| - new ComposerClassFileMapper($GLOBALS['env']['container']->getAutoLoader()) |
| 97 | + new ComposerClassFileMapper($loader) |
72 | 98 | );
|
73 | 99 |
|
74 | 100 | $this->compiler = new Compiler(
|
|
0 commit comments