| @@ 28-57 (lines=30) @@ | ||
| 25 | * |
|
| 26 | * @author Bernhard Schussek <[email protected]> |
|
| 27 | */ |
|
| 28 | class JsonChangeStreamGenerator implements ServiceGenerator |
|
| 29 | { |
|
| 30 | /** |
|
| 31 | * {@inheritdoc} |
|
| 32 | */ |
|
| 33 | public function generateNewInstance($varName, Method $targetMethod, GeneratorRegistry $generatorRegistry, array $options = array()) |
|
| 34 | { |
|
| 35 | Assert::keyExists($options, 'root-dir', 'The "root-dir" option is missing.'); |
|
| 36 | ||
| 37 | if (!isset($options['path'])) { |
|
| 38 | $options['path'] = $targetMethod->getClass()->getDirectory().'/change-stream.json'; |
|
| 39 | } |
|
| 40 | ||
| 41 | Assert::stringNotEmpty($options['root-dir'], 'The "root-dir" option should be a non-empty string. Got: %s'); |
|
| 42 | Assert::stringNotEmpty($options['path'], 'The "path" option should be a non-empty string. Got: %s'); |
|
| 43 | ||
| 44 | $path = Path::makeAbsolute($options['path'], $options['root-dir']); |
|
| 45 | $relPath = Path::makeRelative($path, $targetMethod->getClass()->getDirectory()); |
|
| 46 | ||
| 47 | $escPath = '__DIR__.'.var_export('/'.$relPath, true); |
|
| 48 | ||
| 49 | $targetMethod->getClass()->addImport(new Import('Puli\Repository\ChangeStream\JsonChangeStream')); |
|
| 50 | ||
| 51 | $targetMethod->addBody(sprintf( |
|
| 52 | '$%s = new JsonChangeStream(%s);', |
|
| 53 | $varName, |
|
| 54 | $escPath |
|
| 55 | )); |
|
| 56 | } |
|
| 57 | } |
|
| 58 | ||
| @@ 28-58 (lines=31) @@ | ||
| 25 | * |
|
| 26 | * @author Bernhard Schussek <[email protected]> |
|
| 27 | */ |
|
| 28 | class JsonDiscoveryGenerator implements ServiceGenerator |
|
| 29 | { |
|
| 30 | /** |
|
| 31 | * {@inheritdoc} |
|
| 32 | */ |
|
| 33 | public function generateNewInstance($varName, Method $targetMethod, GeneratorRegistry $generatorRegistry, array $options = array()) |
|
| 34 | { |
|
| 35 | Assert::keyExists($options, 'root-dir', 'The "root-dir" option is missing.'); |
|
| 36 | ||
| 37 | if (!isset($options['path'])) { |
|
| 38 | $options['path'] = $targetMethod->getClass()->getDirectory().'/bindings.json'; |
|
| 39 | } |
|
| 40 | ||
| 41 | Assert::stringNotEmpty($options['root-dir'], 'The "root-dir" option should be a non-empty string. Got: %s'); |
|
| 42 | Assert::stringNotEmpty($options['path'], 'The "path" option should be a non-empty string. Got: %s'); |
|
| 43 | ||
| 44 | $path = Path::makeAbsolute($options['path'], $options['root-dir']); |
|
| 45 | $relPath = Path::makeRelative($path, $targetMethod->getClass()->getDirectory()); |
|
| 46 | ||
| 47 | $escPath = '__DIR__.'.var_export('/'.$relPath, true); |
|
| 48 | ||
| 49 | $targetMethod->getClass()->addImport(new Import('Puli\Discovery\JsonDiscovery')); |
|
| 50 | $targetMethod->getClass()->addImport(new Import('Puli\Discovery\Binding\Initializer\ResourceBindingInitializer')); |
|
| 51 | ||
| 52 | $targetMethod->addBody(sprintf( |
|
| 53 | "$%s = new JsonDiscovery(%s, array(\n new ResourceBindingInitializer(\$repo),\n));", |
|
| 54 | $varName, |
|
| 55 | $escPath |
|
| 56 | )); |
|
| 57 | } |
|
| 58 | } |
|
| 59 | ||