• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / composer-update-check / 15182034191

22 May 2025 03:06AM UTC coverage: 20.538%. First build
15182034191

Pull #130

github

web-flow
[TASK] Update all dependencies
Pull Request #130: [!!!][FEATURE] Modernize plugin

356 of 1832 new or added lines in 57 files covered. (19.43%)

382 of 1860 relevant lines covered (20.54%)

1.11 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/Configuration/Adapter/FileBasedConfigAdapter.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/composer-update-check".
7
 *
8
 * Copyright (C) 2020-2025 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\ComposerUpdateCheck\Configuration\Adapter;
25

26
use CuyZ\Valinor;
27
use EliasHaeussler\ComposerUpdateCheck\Configuration;
28
use EliasHaeussler\ComposerUpdateCheck\Exception;
29
use Symfony\Component\Filesystem;
30

31
use function file_exists;
32
use function getcwd;
33

34
/**
35
 * FileBasedConfigAdapter.
36
 *
37
 * @author Elias Häußler <elias@haeussler.dev>
38
 * @license GPL-3.0-or-later
39
 */
40
abstract class FileBasedConfigAdapter implements ConfigAdapter
41
{
42
    protected readonly string $filename;
43
    protected readonly Valinor\Mapper\TreeMapper $mapper;
44

45
    /**
46
     * @throws Exception\FileDoesNotExist
47
     */
NEW
48
    public function __construct(string $filename)
×
49
    {
NEW
50
        $this->filename = $this->resolveFilename($filename);
×
NEW
51
        $this->mapper = $this->createMapper();
×
52
    }
53

54
    /**
55
     * @throws Exception\FileDoesNotExist
56
     */
NEW
57
    private function resolveFilename(string $filename): string
×
58
    {
NEW
59
        if (!Filesystem\Path::isAbsolute($filename)) {
×
NEW
60
            $currentWorkingDirectory = (string) getcwd();
×
NEW
61
            $filename = Filesystem\Path::makeAbsolute($filename, $currentWorkingDirectory);
×
62
        }
63

NEW
64
        if (!file_exists($filename)) {
×
NEW
65
            throw new Exception\FileDoesNotExist($filename);
×
66
        }
67

NEW
68
        return $filename;
×
69
    }
70

NEW
71
    private function createMapper(): Valinor\Mapper\TreeMapper
×
72
    {
NEW
73
        return (new Valinor\MapperBuilder())
×
NEW
74
            ->allowPermissiveTypes()
×
NEW
75
            ->registerConstructor(
×
NEW
76
                Configuration\Options\PackageExcludePattern::create(...),
×
NEW
77
            )
×
NEW
78
            ->mapper()
×
NEW
79
        ;
×
80
    }
81
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc