@@ 36-109 (lines=74) @@ | ||
33 | * @author Jonathan Wage <[email protected]> |
|
34 | * @author Roman Borschel <[email protected]> |
|
35 | */ |
|
36 | class GenerateHydratorsCommand extends Console\Command\Command |
|
37 | { |
|
38 | /** |
|
39 | * @see Console\Command\Command |
|
40 | */ |
|
41 | protected function configure() |
|
42 | { |
|
43 | $this |
|
44 | ->setName('odm:generate:hydrators') |
|
45 | ->setDescription('Generates hydrator classes for document classes.') |
|
46 | ->setDefinition(array( |
|
47 | new InputOption( |
|
48 | 'filter', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, |
|
49 | 'A string pattern used to match documents that should be processed.' |
|
50 | ), |
|
51 | new InputArgument( |
|
52 | 'dest-path', InputArgument::OPTIONAL, |
|
53 | 'The path to generate your hydrator classes. If none is provided, it will attempt to grab from configuration.' |
|
54 | ), |
|
55 | )) |
|
56 | ->setHelp(<<<EOT |
|
57 | Generates hydrator classes for document classes. |
|
58 | EOT |
|
59 | ); |
|
60 | } |
|
61 | ||
62 | /** |
|
63 | * @see Console\Command\Command |
|
64 | */ |
|
65 | protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
|
66 | { |
|
67 | $dm = $this->getHelper('documentManager')->getDocumentManager(); |
|
68 | ||
69 | $metadatas = $dm->getMetadataFactory()->getAllMetadata(); |
|
70 | $metadatas = MetadataFilter::filter($metadatas, $input->getOption('filter')); |
|
71 | ||
72 | // Process destination directory |
|
73 | if (($destPath = $input->getArgument('dest-path')) === null) { |
|
74 | $destPath = $dm->getConfiguration()->getHydratorDir(); |
|
75 | } |
|
76 | ||
77 | if ( ! is_dir($destPath)) { |
|
78 | mkdir($destPath, 0775, true); |
|
79 | } |
|
80 | ||
81 | $destPath = realpath($destPath); |
|
82 | ||
83 | if ( ! file_exists($destPath)) { |
|
84 | throw new \InvalidArgumentException( |
|
85 | sprintf("Hydrators destination directory '<info>%s</info>' does not exist.", $destPath) |
|
86 | ); |
|
87 | } elseif ( ! is_writable($destPath)) { |
|
88 | throw new \InvalidArgumentException( |
|
89 | sprintf("Hydrators destination directory '<info>%s</info>' does not have write permissions.", $destPath) |
|
90 | ); |
|
91 | } |
|
92 | ||
93 | if (count($metadatas)) { |
|
94 | foreach ($metadatas as $metadata) { |
|
95 | $output->write( |
|
96 | sprintf('Processing document "<info>%s</info>"', $metadata->name) . PHP_EOL |
|
97 | ); |
|
98 | } |
|
99 | ||
100 | // Generating Hydrators |
|
101 | $dm->getHydratorFactory()->generateHydratorClasses($metadatas, $destPath); |
|
102 | ||
103 | // Outputting information message |
|
104 | $output->write(PHP_EOL . sprintf('Hydrator classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL); |
|
105 | } else { |
|
106 | $output->write('No Metadata Classes to process.' . PHP_EOL); |
|
107 | } |
|
108 | } |
|
109 | } |
|
110 |
@@ 36-109 (lines=74) @@ | ||
33 | * @author Jonathan Wage <[email protected]> |
|
34 | * @author Roman Borschel <[email protected]> |
|
35 | */ |
|
36 | class GenerateProxiesCommand extends Console\Command\Command |
|
37 | { |
|
38 | /** |
|
39 | * @see Console\Command\Command |
|
40 | */ |
|
41 | protected function configure() |
|
42 | { |
|
43 | $this |
|
44 | ->setName('odm:generate:proxies') |
|
45 | ->setDescription('Generates proxy classes for document classes.') |
|
46 | ->setDefinition(array( |
|
47 | new InputOption( |
|
48 | 'filter', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, |
|
49 | 'A string pattern used to match documents that should be processed.' |
|
50 | ), |
|
51 | new InputArgument( |
|
52 | 'dest-path', InputArgument::OPTIONAL, |
|
53 | 'The path to generate your proxy classes. If none is provided, it will attempt to grab from configuration.' |
|
54 | ), |
|
55 | )) |
|
56 | ->setHelp(<<<EOT |
|
57 | Generates proxy classes for document classes. |
|
58 | EOT |
|
59 | ); |
|
60 | } |
|
61 | ||
62 | /** |
|
63 | * @see Console\Command\Command |
|
64 | */ |
|
65 | protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) |
|
66 | { |
|
67 | $dm = $this->getHelper('documentManager')->getDocumentManager(); |
|
68 | ||
69 | $metadatas = $dm->getMetadataFactory()->getAllMetadata(); |
|
70 | $metadatas = MetadataFilter::filter($metadatas, $input->getOption('filter')); |
|
71 | ||
72 | // Process destination directory |
|
73 | if (($destPath = $input->getArgument('dest-path')) === null) { |
|
74 | $destPath = $dm->getConfiguration()->getProxyDir(); |
|
75 | } |
|
76 | ||
77 | if ( ! is_dir($destPath)) { |
|
78 | mkdir($destPath, 0775, true); |
|
79 | } |
|
80 | ||
81 | $destPath = realpath($destPath); |
|
82 | ||
83 | if ( ! file_exists($destPath)) { |
|
84 | throw new \InvalidArgumentException( |
|
85 | sprintf("Proxies destination directory '<info>%s</info>' does not exist.", $destPath) |
|
86 | ); |
|
87 | } elseif ( ! is_writable($destPath)) { |
|
88 | throw new \InvalidArgumentException( |
|
89 | sprintf("Proxies destination directory '<info>%s</info>' does not have write permissions.", $destPath) |
|
90 | ); |
|
91 | } |
|
92 | ||
93 | if (count($metadatas)) { |
|
94 | foreach ($metadatas as $metadata) { |
|
95 | $output->write( |
|
96 | sprintf('Processing document "<info>%s</info>"', $metadata->name) . PHP_EOL |
|
97 | ); |
|
98 | } |
|
99 | ||
100 | // Generating Proxies |
|
101 | $dm->getProxyFactory()->generateProxyClasses($metadatas, $destPath); |
|
102 | ||
103 | // Outputting information message |
|
104 | $output->write(PHP_EOL . sprintf('Proxy classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL); |
|
105 | } else { |
|
106 | $output->write('No Metadata Classes to process.' . PHP_EOL); |
|
107 | } |
|
108 | } |
|
109 | } |
|
110 |