Passed
Branch master (ee1d9b)
by Allan
03:37 queued 01:36
created

ChangelogRepository   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 22
dl 0
loc 63
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 10 1
A getByPackageName() 0 23 4
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerChangelogs\Repositories;
7
8
use Symfony\Component\Console\Output\OutputInterface as Output;
9
10
use Vaimo\ComposerChangelogs\Exceptions\PackageResolverException;
11
12
class ChangelogRepository
13
{
14
    /**
15
     * @var \Vaimo\ComposerChangelogs\Resolvers\PackageResolver
16
     */
17
    private $packageResolver;
18
19
    /**
20
     * @var \Vaimo\ComposerChangelogs\Loaders\ChangelogLoader
21
     */
22
    private $changelogLoader;
23
24
    /**
25
     * @var \Vaimo\ComposerChangelogs\Validators\ChangelogValidator
26
     */
27
    private $changelogValidator;
28
29
    /**
30
     * @var \Vaimo\ComposerChangelogs\Console\OutputGenerator
31
     */
32
    private $outputGenerator;
33
34
    /**
35
     * @param \Vaimo\ComposerChangelogs\Resolvers\PackageResolver $packageResolver
36
     * @param \Vaimo\ComposerChangelogs\Loaders\ChangelogLoader $changelogLoader
37
     * @param \Vaimo\ComposerChangelogs\Validators\ChangelogValidator $changelogValidator
38
     * @param \Vaimo\ComposerChangelogs\Console\OutputGenerator $outputGenerator
39
     */
40
    public function __construct(
41
        \Vaimo\ComposerChangelogs\Resolvers\PackageResolver $packageResolver,
42
        \Vaimo\ComposerChangelogs\Loaders\ChangelogLoader $changelogLoader,
43
        \Vaimo\ComposerChangelogs\Validators\ChangelogValidator $changelogValidator,
44
        \Vaimo\ComposerChangelogs\Console\OutputGenerator $outputGenerator
45
    ) {
46
        $this->packageResolver = $packageResolver;
47
        $this->changelogLoader = $changelogLoader;
48
        $this->changelogValidator = $changelogValidator;
49
        $this->outputGenerator = $outputGenerator;
50
    }
51
52
    public function getByPackageName($query, $verbosity = Output::VERBOSITY_NORMAL)
53
    {
54
        try {
55
            $package = $this->packageResolver->resolvePackage(is_string($query) ? $query : '');
56
        } catch (PackageResolverException $exception) {
57
            $this->outputGenerator->writeResolverException($exception);
58
59
            return null;
60
        }
61
        
62
        $result = $this->changelogValidator->validateForPackage($package, $verbosity);
63
64
        if (!$result()) {
65
            $this->outputGenerator->writeLines($result->getMessages());
66
            
67
            return null;
68
        }
69
70
        $changelog = $this->changelogLoader->load($package);
71
72
        return new \Vaimo\ComposerChangelogs\Data\Changelog(
73
            $package,
74
            $changelog
75
        );
76
    }
77
}
78