Completed
Push — master ( aaccd5...c6e65b )
by Jonathan
10s
created

ChangelogGenerator::generate()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
eloc 13
nc 3
nop 4
dl 0
loc 20
rs 9.4285
c 0
b 0
f 0
ccs 14
cts 14
cp 1
crap 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ChangelogGenerator;
6
7
use Symfony\Component\Console\Output\OutputInterface;
8
use function count;
9
use function sprintf;
10
11
class ChangelogGenerator
12
{
13
    /** @var IssueRepository */
14
    private $issueRepository;
15
16
    /** @var IssueGrouper */
17
    private $issueGrouper;
18
19 1
    public function __construct(IssueRepository $issueRepository, IssueGrouper $issueGrouper)
20
    {
21 1
        $this->issueRepository = $issueRepository;
22 1
        $this->issueGrouper    = $issueGrouper;
23 1
    }
24
25 1
    public function generate(string $user, string $repository, string $milestone, OutputInterface $output) : void
26
    {
27 1
        $issues      = $this->issueRepository->getMilestoneIssues($user, $repository, $milestone);
28 1
        $issueGroups = $this->issueGrouper->groupIssues($issues);
29
30 1
        $output->writeln([
31 1
            sprintf('## %s', $milestone),
32 1
            '',
33 1
            sprintf('Total issues resolved: **%s**', count($issues)),
34
        ]);
35
36 1
        foreach ($issueGroups as $issueGroup) {
37 1
            $output->writeln([
38 1
                '',
39 1
                sprintf('### %s', $issueGroup->getName()),
40 1
                '',
41
            ]);
42
43 1
            foreach ($issueGroup->getIssues() as $issue) {
44 1
                $output->writeln($issue->render());
45
            }
46
        }
47 1
    }
48
}
49