|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace Bone\BoneDoctrine; |
|
4
|
|
|
|
|
5
|
|
|
use Barnacle\Container; |
|
6
|
|
|
use Barnacle\Exception\NotFoundException; |
|
7
|
|
|
use Barnacle\RegistrationInterface; |
|
8
|
|
|
use Bone\BoneDoctrine\Command\LoadFixturesCommand; |
|
9
|
|
|
use Bone\Console\CommandRegistrationInterface; |
|
10
|
|
|
use Bone\Console\ConsoleApplication; |
|
11
|
|
|
use Doctrine\Common\Cache\Psr6\DoctrineProvider; |
|
|
|
|
|
|
12
|
|
|
use Doctrine\DBAL\Connection; |
|
13
|
|
|
use Doctrine\DBAL\DriverManager; |
|
14
|
|
|
use Doctrine\Migrations\Configuration\Configuration; |
|
15
|
|
|
use Doctrine\Migrations\Configuration\EntityManager\ExistingEntityManager; |
|
16
|
|
|
use Doctrine\Migrations\Configuration\Migration\ExistingConfiguration; |
|
17
|
|
|
use Doctrine\Migrations\DependencyFactory; |
|
18
|
|
|
use Doctrine\Migrations\Metadata\Storage\TableMetadataStorageConfiguration; |
|
19
|
|
|
use Doctrine\Migrations\Tools\Console\Command\DoctrineCommand; |
|
20
|
|
|
use Doctrine\Migrations\Tools\Console\Command\DiffCommand; |
|
21
|
|
|
use Doctrine\Migrations\Tools\Console\Command\DumpSchemaCommand; |
|
22
|
|
|
use Doctrine\Migrations\Tools\Console\Command\ExecuteCommand; |
|
23
|
|
|
use Doctrine\Migrations\Tools\Console\Command\GenerateCommand; |
|
24
|
|
|
use Doctrine\Migrations\Tools\Console\Command\LatestCommand; |
|
25
|
|
|
use Doctrine\Migrations\Tools\Console\Command\ListCommand; |
|
26
|
|
|
use Doctrine\Migrations\Tools\Console\Command\MigrateCommand; |
|
27
|
|
|
use Doctrine\Migrations\Tools\Console\Command\RollupCommand; |
|
28
|
|
|
use Doctrine\Migrations\Tools\Console\Command\StatusCommand; |
|
29
|
|
|
use Doctrine\Migrations\Tools\Console\Command\SyncMetadataCommand; |
|
30
|
|
|
use Doctrine\Migrations\Tools\Console\Command\VersionCommand; |
|
31
|
|
|
use Doctrine\ORM\EntityManager; |
|
32
|
|
|
use Doctrine\ORM\EntityManagerInterface; |
|
33
|
|
|
use Doctrine\ORM\ORMSetup; |
|
34
|
|
|
use Doctrine\ORM\Tools\Console\Command\GenerateProxiesCommand; |
|
35
|
|
|
use Doctrine\ORM\Tools\Console\Command\InfoCommand; |
|
36
|
|
|
use Doctrine\ORM\Tools\Console\Command\MappingDescribeCommand; |
|
37
|
|
|
use Doctrine\ORM\Tools\Console\Command\RunDqlCommand; |
|
38
|
|
|
use Doctrine\ORM\Tools\Console\Command\SchemaTool\CreateCommand; |
|
39
|
|
|
use Doctrine\ORM\Tools\Console\Command\SchemaTool\DropCommand; |
|
40
|
|
|
use Doctrine\ORM\Tools\Console\Command\ValidateSchemaCommand; |
|
41
|
|
|
use Doctrine\ORM\Tools\Console\ConsoleRunner; |
|
42
|
|
|
use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider; |
|
43
|
|
|
use Symfony\Component\Console\Helper\QuestionHelper; |
|
44
|
|
|
use Symfony\Component\Cache\Adapter\FilesystemAdapter; |
|
45
|
|
|
|
|
46
|
|
|
class BoneDoctrinePackage implements RegistrationInterface, CommandRegistrationInterface |
|
47
|
|
|
{ |
|
48
|
|
|
/** |
|
49
|
|
|
* @param Container $c |
|
50
|
|
|
* @throws \Doctrine\ORM\ORMException |
|
51
|
|
|
*/ |
|
52
|
5 |
|
public function addToContainer(Container $c) |
|
53
|
|
|
{ |
|
54
|
|
|
/** @var EntityManager $em */ |
|
55
|
|
|
|
|
56
|
5 |
|
if (!$c->has('cache_dir')) { |
|
57
|
1 |
|
throw new NotFoundException('please set cache_dir in your config'); |
|
58
|
|
|
} |
|
59
|
|
|
|
|
60
|
4 |
|
if (!$c->has('db')) { |
|
61
|
1 |
|
throw new NotFoundException('please set db connection details in your config'); |
|
62
|
|
|
} |
|
63
|
|
|
|
|
64
|
3 |
|
if (!$c->has('entity_paths')) { |
|
65
|
1 |
|
throw new NotFoundException('please set entity_paths in your config'); |
|
66
|
|
|
} |
|
67
|
|
|
|
|
68
|
2 |
|
if (!$c->has('proxy_dir')) { |
|
69
|
1 |
|
throw new NotFoundException('please set proxy_dir in your config'); |
|
70
|
|
|
} |
|
71
|
|
|
|
|
72
|
1 |
|
$credentials = $c->get('db'); |
|
73
|
1 |
|
$entityPaths = $c->get('entity_paths'); |
|
74
|
1 |
|
$proxyDir =$c->get('proxy_dir'); |
|
75
|
1 |
|
$cacheDir = $c->get('cache_dir'); |
|
76
|
1 |
|
$isDevMode = $c->has('devMode') ? $c->get('devMode') : false; |
|
77
|
1 |
|
$cachePool = new FilesystemAdapter('', 60, $cacheDir); |
|
78
|
1 |
|
$config = ORMSetup::createAttributeMetadataConfiguration($entityPaths, $isDevMode, $proxyDir, $cachePool); |
|
79
|
1 |
|
$config->setProxyNamespace('DoctrineProxies'); |
|
80
|
1 |
|
$config->setQueryCache($cachePool); |
|
81
|
1 |
|
$connection = DriverManager::getConnection($credentials, $config); |
|
82
|
1 |
|
$entityManager = new EntityManager($connection, $config); |
|
83
|
|
|
|
|
84
|
1 |
|
$c[EntityManager::class] = $entityManager; |
|
85
|
1 |
|
$c[EntityManagerInterface::class] = $entityManager; |
|
86
|
|
|
} |
|
87
|
|
|
|
|
88
|
|
|
/** |
|
89
|
|
|
* @param Container $container |
|
90
|
|
|
* @return array |
|
91
|
|
|
*/ |
|
92
|
1 |
|
public function registerConsoleCommands(Container $container): array |
|
93
|
|
|
{ |
|
94
|
|
|
/** @var EntityManager $em $em */ |
|
95
|
1 |
|
$em = $container->get(EntityManager::class); |
|
96
|
1 |
|
$app = $container->get(ConsoleApplication::class); |
|
|
|
|
|
|
97
|
1 |
|
$migrationsDir = 'data/migrations'; |
|
98
|
1 |
|
$meta = new TableMetadataStorageConfiguration(); |
|
99
|
1 |
|
$meta->setTableName('Migration'); |
|
100
|
1 |
|
$configuration = new Configuration(); |
|
101
|
1 |
|
$configuration->addMigrationsDirectory('Migrations', $migrationsDir); |
|
102
|
1 |
|
$configuration->setMetadataStorageConfiguration($meta); |
|
103
|
|
|
|
|
104
|
1 |
|
$configLoader = new ExistingConfiguration($configuration); |
|
105
|
1 |
|
$emLoader = new ExistingEntityManager($em); |
|
106
|
1 |
|
$dependencyFactory = DependencyFactory::fromEntityManager($configLoader, $emLoader); |
|
107
|
1 |
|
$emProvider = new SingleManagerProvider($em); |
|
108
|
|
|
|
|
109
|
1 |
|
$diff = new DiffCommand($dependencyFactory); |
|
110
|
1 |
|
$dump = new DumpSchemaCommand($dependencyFactory); |
|
111
|
1 |
|
$exec = new ExecuteCommand($dependencyFactory); |
|
112
|
1 |
|
$gen = new GenerateCommand($dependencyFactory); |
|
113
|
1 |
|
$latest = new LatestCommand($dependencyFactory); |
|
114
|
1 |
|
$list = new ListCommand($dependencyFactory); |
|
115
|
1 |
|
$migrate = new MigrateCommand($dependencyFactory); |
|
116
|
1 |
|
$rollup = new RollupCommand($dependencyFactory); |
|
117
|
1 |
|
$status = new StatusCommand($dependencyFactory); |
|
118
|
1 |
|
$sync = new SyncMetadataCommand($dependencyFactory); |
|
119
|
1 |
|
$ver = new VersionCommand($dependencyFactory); |
|
120
|
1 |
|
$dropDb = new DropCommand($emProvider); |
|
121
|
1 |
|
$createDb = new CreateCommand($emProvider); |
|
122
|
1 |
|
$validate = new ValidateSchemaCommand($emProvider); |
|
123
|
1 |
|
$proxy = new GenerateProxiesCommand($emProvider); |
|
124
|
1 |
|
$info = new InfoCommand($emProvider); |
|
125
|
1 |
|
$mappingDescribe = new MappingDescribeCommand($emProvider); |
|
126
|
1 |
|
$runDql = new RunDqlCommand($emProvider); |
|
127
|
1 |
|
$fixtures = new LoadFixturesCommand($em, $container->has('fixtures') ? $container->get('fixtures') : []); |
|
128
|
|
|
|
|
129
|
1 |
|
$diff->setName('migrant:diff'); |
|
130
|
1 |
|
$createDb->setName('migrant:create'); |
|
131
|
1 |
|
$dropDb->setName('migrant:drop'); |
|
132
|
1 |
|
$dump->setName('migrant:dump'); |
|
133
|
1 |
|
$exec->setName('migrant:execute'); |
|
134
|
1 |
|
$gen->setName('migrant:generate'); |
|
135
|
1 |
|
$info->setName('migrant:info'); |
|
136
|
1 |
|
$latest->setName('migrant:latest'); |
|
137
|
1 |
|
$list->setName('migrant:list'); |
|
138
|
1 |
|
$mappingDescribe->setName('migrant:describe'); |
|
139
|
1 |
|
$migrate->setName('migrant:migrate'); |
|
140
|
1 |
|
$runDql->setName('migrant:run-dql'); |
|
141
|
1 |
|
$rollup->setName('migrant:rollup'); |
|
142
|
1 |
|
$status->setName('migrant:status'); |
|
143
|
1 |
|
$sync->setName('migrant:sync'); |
|
144
|
1 |
|
$validate->setName('migrant:validate'); |
|
145
|
1 |
|
$ver->setName('migrant:version'); |
|
146
|
1 |
|
$proxy->setName('migrant:generate-proxies'); |
|
147
|
|
|
|
|
148
|
|
|
|
|
149
|
1 |
|
$commands = [$createDb, $dropDb, $diff, $dump, $exec, $gen, $info, $latest, $list, $mappingDescribe, $migrate, $rollup, $runDql, $status, $sync, $validate, $ver, $proxy, $fixtures]; |
|
150
|
|
|
|
|
151
|
|
|
/** @var DoctrineCommand $command */ |
|
152
|
1 |
|
foreach ($commands as $command) { |
|
153
|
1 |
|
$name = $command->getName(); |
|
154
|
1 |
|
$name = str_replace(array('migrations:', 'orm:'), '', $name); |
|
155
|
1 |
|
$command->setName($name); |
|
156
|
|
|
} |
|
157
|
|
|
|
|
158
|
1 |
|
return $commands; |
|
159
|
|
|
} |
|
160
|
|
|
} |
|
161
|
|
|
|
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths