Skip to content
This repository was archived by the owner on Nov 19, 2024. It is now read-only.

Commit 3dc1ca4

Browse files
author
svensp
committed
new event: ServiceWriterWritePreparedEvent
1 parent 20f74b7 commit 3dc1ca4

File tree

3 files changed

+116
-2
lines changed

3 files changed

+116
-2
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php namespace Rancherize\Blueprint\Infrastructure\Service\Events;
2+
3+
use Rancherize\Blueprint\Infrastructure\Service\Service;
4+
use Rancherize\Blueprint\Infrastructure\Service\ServiceYamlDefinition;
5+
use Symfony\Component\EventDispatcher\Event;
6+
7+
/**
8+
* Class ServiceWriterServicePreparedEvent
9+
* @package Rancherize\Blueprint\Infrastructure\Service\Events
10+
*/
11+
class ServiceWriterWritePreparedEvent extends Event {
12+
13+
const NAME = 'service-writer.prepared-to-write';
14+
15+
/**
16+
* @var Service
17+
*/
18+
private $service;
19+
20+
/**
21+
* @var int
22+
*/
23+
private $fileVersion = 2;
24+
/**
25+
* @var ServiceYamlDefinition
26+
*/
27+
private $definition;
28+
29+
/**
30+
*
31+
* /**
32+
* ServiceWriterServicePreparedEvent constructor.
33+
* @param Service $service
34+
* @param ServiceYamlDefinition $definition
35+
*/
36+
public function __construct( Service $service, ServiceYamlDefinition $definition ) {
37+
$this->service = $service;
38+
$this->definition = $definition;
39+
}
40+
41+
/**
42+
* @return Service
43+
*/
44+
public function getService() {
45+
return $this->service;
46+
}
47+
48+
/**
49+
* @return int
50+
*/
51+
public function getFileVersion(): int
52+
{
53+
return $this->fileVersion;
54+
}
55+
56+
/**
57+
* @return ServiceYamlDefinition
58+
*/
59+
public function getDefinition(): ServiceYamlDefinition
60+
{
61+
return $this->definition;
62+
}
63+
64+
}

app/Blueprint/Infrastructure/Service/ServiceWriter.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
use Rancherize\Blueprint\Infrastructure\Dockerfile\Dockerfile;
33
use Rancherize\Blueprint\Infrastructure\Dockerfile\DockerfileWriter;
44
use Rancherize\Blueprint\Infrastructure\Service\Events\ServiceWriterServicePreparedEvent;
5+
use Rancherize\Blueprint\Infrastructure\Service\Events\ServiceWriterWritePreparedEvent;
56
use Rancherize\Configuration\Exceptions\FileNotFoundException;
67
use Rancherize\File\FileLoader;
78
use Rancherize\File\FileWriter;
@@ -180,13 +181,23 @@ public function write(Service $service, FileWriter $fileWriter) {
180181

181182
$rancherContentPreparedEvent = new ServiceWriterServicePreparedEvent($service, $content, $volumeDefinitions, $rancherContent);
182183
$this->event->dispatch(ServiceWriterServicePreparedEvent::NAME, $rancherContentPreparedEvent);
184+
183185
// might have been changed by the listeners
184186
$rancherContent = $rancherContentPreparedEvent->getRancherContent();
185187
$content = $rancherContentPreparedEvent->getDockerContent();
186188
$volumeDefinitions = $rancherContentPreparedEvent->getVolumeDefinition();
187189

188-
$this->writeYaml($this->path . '/docker-compose.yml', $service, $fileWriter, $content, $volumeDefinitions);
189-
$this->writeYaml($this->path . '/rancher-compose.yml', $service, $fileWriter, $rancherContent);
190+
191+
$definition = ServiceYamlDefinition::make($content, $rancherContent, $volumeDefinitions);
192+
$this->event->dispatch(ServiceWriterWritePreparedEvent::NAME,
193+
new ServiceWriterWritePreparedEvent(
194+
$service,
195+
$definition
196+
)
197+
);
198+
199+
$this->writeYaml($this->path . '/docker-compose.yml', $service, $fileWriter, $definition->dockerComposeEntry, $definition->volumeDefinition);
200+
$this->writeYaml($this->path . '/rancher-compose.yml', $service, $fileWriter, $definition->rancherComposeEntry);
190201
}
191202

192203
/**
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php namespace Rancherize\Blueprint\Infrastructure\Service;
2+
3+
/**
4+
* Class ServiceYamlDefinition
5+
* @package Rancherize\Blueprint\Infrastructure\Service
6+
*/
7+
class ServiceYamlDefinition
8+
{
9+
10+
/**
11+
* @var array
12+
*/
13+
public $dockerComposeEntry = [];
14+
15+
/**
16+
* @var array
17+
*/
18+
public $rancherComposeEntry = [];
19+
20+
/**
21+
* @var array
22+
*/
23+
public $volumeDefinition = [];
24+
25+
/**
26+
* @param $dockerComposeEntry
27+
* @param $rancherComposeEntry
28+
* @param $volumeDefinition
29+
* @return ServiceYamlDefinition
30+
*/
31+
static function make($dockerComposeEntry, $rancherComposeEntry, $volumeDefinition) {
32+
$definition = new self;
33+
$definition->dockerComposeEntry = $dockerComposeEntry;
34+
$definition->rancherComposeEntry = $rancherComposeEntry;
35+
$definition->volumeDefinition = $volumeDefinition;
36+
return $definition;
37+
}
38+
39+
}

0 commit comments

Comments
 (0)