ChangelogManager::bootstrap()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 32
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 18
c 1
b 0
f 1
dl 0
loc 32
rs 9.6666
cc 3
nc 3
nop 0
1
<?php
2
/**
3
 * Copyright © Vaimo Group. All rights reserved.
4
 * See LICENSE_VAIMO.txt for license details.
5
 */
6
namespace Vaimo\ComposerChangelogs\Managers;
7
8
use Vaimo\ComposerChangelogs\Factories;
9
10
class ChangelogManager
11
{
12
    /**
13
     * @var \Vaimo\ComposerChangelogs\Composer\Context
14
     */
15
    private $composerCtx;
16
17
    /**
18
     * @var Factories\Changelog\ConfigResolverFactory
19
     */
20
    private $confResolverFactory;
21
    
22
    /**
23
     * @param \Vaimo\ComposerChangelogs\Composer\Context $composerCtx
24
     */
25
    public function __construct(
26
        \Vaimo\ComposerChangelogs\Composer\Context $composerCtx
27
    ) {
28
        $this->composerCtx = $composerCtx;
29
30
        $this->confResolverFactory = new Factories\Changelog\ConfigResolverFactory(
31
            $this->composerCtx
32
        );
33
    }
34
    
35
    public function bootstrap()
36
    {
37
        $configResolver = $this->confResolverFactory->create();
38
39
        $composer = $this->composerCtx->getLocalComposer();
40
        
41
        $package = $composer->getPackage();
42
43
        $chLogRepoFactory = new Factories\ChangelogRepositoryFactory($this->composerCtx);
44
        $chLogRepo = $chLogRepoFactory->create(false);
45
46
        $changelog = $chLogRepo->getByPackageName($package->getName());
47
        
48
        if (!$changelog) {
49
            return;
50
        }
51
52
        $infoResolver = new \Vaimo\ComposerChangelogs\Resolvers\PackageInfoResolver(
53
            $composer->getInstallationManager()
54
        );
55
56
        $urlResolver = new \Vaimo\ComposerChangelogs\Resolvers\Url\RemoteSourceResolver($infoResolver);
57
        
58
        $docsGenerator = new \Vaimo\ComposerChangelogs\Generators\DocumentationGenerator(
59
            $configResolver,
60
            $infoResolver,
61
            $urlResolver
62
        );
63
64
        try {
65
            $docsGenerator->generate($package, $changelog->getReleases());
66
        } catch (\Exception $exception) {
67
            // Due to change-log not being all that important, we don't fail the installation just because of it
68
        }
69
    }
70
}
71