Completed
Push — master ( bbdfc2...ebac7c )
by Thomas
05:30
created

CommandService::__construct()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 25
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 0
loc 25
ccs 8
cts 8
cp 1
rs 8.8571
cc 2
eloc 20
nc 2
nop 2
crap 2
1
<?php
2
namespace keeko\tools\services;
3
4
use Symfony\Component\Console\Command\Command;
5
use keeko\tools\model\Project;
6
use keeko\tools\config\ToolsConfig;
7
use Symfony\Component\Console\Logger\ConsoleLogger;
8
use keeko\tools\generator\GeneratorFactory;
9
use keeko\tools\command\AbstractKeekoCommand;
10
11
class CommandService {
12
13
	/** @var IOService */
14
	private $io;
15
16
	/** @var Command */
17
	private $command;
18
19
	/** @var ToolsConfig */
20
	private $config;
21
22 20
	/** @var ConsoleLogger */
23 20
	private $logger;
24 20
25 20
	/** @var Project */
26 20
	private $project;
27
28 20
	/** @var GeneratorFactory */
29 20
	private $factory;
30 20
31 20
	/** @var PackageService */
32
	private $packageService;
33 20
34 20
	/** @var ModelService */
35 20
	private $modelService;
36 20
37
	/** @var JsonService */
38 20
	private $jsonService;
39 20
40 20
	/** @var CodeService */
41 20
	private $codeService;
42 20
43
	/** @var GeneratorDefinitionService */
44
	private $generatorDefinitionService;
45
46
	public function __construct(Command $command, ConsoleLogger $logger) {
47 20
		$this->io = new IOService($command);
48 20
		$this->command = $command;
49
		$this->logger = $logger;
50
		$this->config = new ToolsConfig();
51
		$this->factory = new GeneratorFactory($this);
52
53
		$input = $this->io->getInput();
54 20
		$wd = $input->getOption('workdir');
55 20
		$workdir = $wd !== null ? $wd : getcwd();
56
		$this->project = new Project($workdir);
57
58
		$this->packageService = new PackageService();
59
		$this->modelService = new ModelService();
60
		$this->jsonService = new JsonService();
61 20
		$this->codeService = new CodeService();
62 20
		$this->generatorDefinitionService = new GeneratorDefinitionService();
63
64
		$this->packageService->setService($this);
65
		$this->modelService->setService($this);
66
		$this->jsonService->setService($this);
67
		$this->codeService->setService($this);
68 20
		$this->generatorDefinitionService->setService($this);
69 20
70
	}
71
72
	/**
73
	 * @return AbstractKeekoCommand
74
	 */
75 20
	public function getCommand() {
76 20
		return $this->command;
77
	}
78
79
	/**
80
	 * @return ToolsConfig
81
	 */
82 20
	public function getConfig() {
83 20
		return $this->config;
84
	}
85
86
	/**
87
	 * @return IOService
88
	 */
89 20
	public function getIOService() {
90 20
		return $this->io;
91
	}
92
93
	/**
94
	 * @return Project
95
	 */
96 20
	public function getProject() {
97 20
		return $this->project;
98
	}
99
100
	/**
101
	 * @return ConsoleLogger
102
	 */
103
	public function getLogger() {
104
		return $this->logger;
105
	}
106
107
	/**
108
	 * @return GeneratorFactory
109
	 */
110
	public function getFactory() {
111
		return $this->factory;
112
	}
113
114
	/**
115
	 * @return PackageService
116
	 */
117
	public function getPackageService() {
118
		return $this->packageService;
119
	}
120
121
	/**
122
	 * @return ModelService
123
	 */
124
	public function getModelService() {
125
		return $this->modelService;
126
	}
127
128
	/**
129
	 * @return JsonService
130
	 */
131
	public function getJsonService() {
132
		return $this->jsonService;
133
	}
134
135
	/**
136
	 * @return CodeService
137
	 */
138
	public function getCodeService() {
139
		return $this->codeService;
140
	}
141
142
	/**
143
	 * @return GeneratorDefinitionService
144
	 */
145
	public function getGeneratorDefinitionService() {
146
		return $this->generatorDefinitionService;
147
	}
148
}
149