GenerateProxiesCommand   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 6
dl 0
loc 67
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A configure() 0 15 1
B execute() 0 42 7
1
<?php
2
3
namespace Doctrine\ODM\CouchDB\Tools\Console\Command;
4
5
use Symfony\Component\Console\Input\InputArgument,
6
    Symfony\Component\Console\Input\InputOption,
7
    Symfony\Component\Console,
8
    Doctrine\ODM\CouchDB\Tools\Console\MetadataFilter;
9
10
/**
11
 * Command to (re)generate the proxy classes used by doctrine.
12
 *
13
 * @since   1.0
14
 * @author  Benjamin Eberlei <[email protected]>
15
 * @author  Guilherme Blanco <[email protected]>
16
 * @author  Jonathan Wage <[email protected]>
17
 * @author  Roman Borschel <[email protected]>
18
 */
19
class GenerateProxiesCommand extends Console\Command\Command
20
{
21
    /**
22
     * @see Console\Command\Command
23
     */
24
    protected function configure()
25
    {
26
        $this->setName('couchdb:odm:generate-proxies')
27
             ->setDescription('Generates proxy classes for document classes.')
28
             ->setDefinition(array(
29
                 new InputOption(
30
                     'filter', 'f', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY,
31
                     'A string pattern used to match documents that should be processed.'
32
                 ),
33
                 new InputArgument(
34
                     'dest-path', InputArgument::OPTIONAL,
35
                     'The path to generate your proxy classes. If none is provided, it will attempt to grab from configuration.'
36
                 ),
37
             ));
38
    }
39
40
    /**
41
     * @see Console\Command\Command
42
     */
43
    protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output)
44
    {
45
        $dm = $this->getHelper('couchdb')->getDocumentManager();
0 ignored issues
show
Bug introduced by
The method getDocumentManager() does not seem to exist on object<Symfony\Component...Helper\HelperInterface>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
46
        
47
        $metadatas = $dm->getMetadataFactory()->getAllMetadata();
48
        $metadatas = MetadataFilter::filter($metadatas, $input->getOption('filter'));
49
50
        // Process destination directory
51
        if (($destPath = $input->getArgument('dest-path')) === null) {
52
            $destPath = $dm->getConfiguration()->getProxyDir();
53
        }
54
55
        if ( ! is_dir($destPath)) {
56
            mkdir($destPath, 0777, true);
57
        }
58
59
        $destPath = realpath($destPath);
60
61
        if ( ! file_exists($destPath)) {
62
            throw new \InvalidArgumentException(
63
                sprintf("Proxies destination directory '<info>%s</info>' does not exist.", $destPath)
64
            );
65
        } elseif ( ! is_writable($destPath)) {
66
            throw new \InvalidArgumentException(
67
                sprintf("Proxies destination directory '<info>%s</info>' does not have write permissions.", $destPath)
68
            );
69
        }
70
71
        if ( ! count($metadatas)) {
72
            $output->write('No Metadata Classes to process.' . PHP_EOL);
73
            return;
74
        }
75
        
76
        foreach ($metadatas as $metadata) {
77
            $output->write(sprintf('Processing document "<info>%s</info>"', $metadata->name) . PHP_EOL);
78
        }
79
80
        // Acutally generate the Proxies
81
        $dm->getProxyFactory()->generateProxyClasses($metadatas, $destPath);
82
83
        $output->write(PHP_EOL . sprintf('Proxy classes generated to "<info>%s</INFO>"', $destPath) . PHP_EOL);
84
    }
85
}
86