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

eliashaeussler / version-bumper / 12732412099

12 Jan 2025 09:46AM UTC coverage: 78.07% (-10.7%) from 88.745%
12732412099

Pull #17

github

web-flow
Merge 3cfc46d2d into 0b06fcb19
Pull Request #17: [!!!][FEATURE] Introduce config presets

8 of 105 new or added lines in 6 files covered. (7.62%)

4 existing lines in 1 file now uncovered.

623 of 798 relevant lines covered (78.07%)

3.73 hits per line

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

0.0
/src/Config/Preset/Typo3ExtensionPreset.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/version-bumper".
7
 *
8
 * Copyright (C) 2024-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\VersionBumper\Config\Preset;
25

26
use EliasHaeussler\VersionBumper\Config;
27
use Symfony\Component\OptionsResolver;
28

29
/**
30
 * Typo3ExtensionPreset.
31
 *
32
 * @author Elias Häußler <elias@haeussler.dev>
33
 * @license GPL-3.0-or-later
34
 */
35
final class Typo3ExtensionPreset implements Preset
36
{
37
    /**
38
     * @var array{documentation: bool}
39
     */
40
    private readonly array $options;
41

NEW
42
    public function __construct(array $options = [])
×
43
    {
NEW
44
        $this->options = $this->resolveOptions($options);
×
45
    }
46

NEW
47
    public function getConfig(): Config\VersionBumperConfig
×
48
    {
NEW
49
        $filesToModify = [
×
NEW
50
            new Config\FileToModify(
×
NEW
51
                'ext_emconf.php',
×
NEW
52
                [
×
NEW
53
                    new Config\FilePattern("'version' => '{%version%}'"),
×
NEW
54
                ],
×
NEW
55
                true,
×
NEW
56
            ),
×
NEW
57
        ];
×
58

NEW
59
        if ($this->options['documentation']) {
×
NEW
60
            $filesToModify[] = new Config\FileToModify(
×
NEW
61
                'Documentation/guides.xml',
×
NEW
62
                [
×
NEW
63
                    new Config\FilePattern('release="{%version%}"'),
×
NEW
64
                ],
×
NEW
65
                true,
×
NEW
66
            );
×
67
        }
68

NEW
69
        return new Config\VersionBumperConfig(filesToModify: $filesToModify);
×
70
    }
71

NEW
72
    public static function getIdentifier(): string
×
73
    {
NEW
74
        return 'typo3-extension';
×
75
    }
76

77
    /**
78
     * @param array<string, mixed> $options
79
     *
80
     * @return array{documentation: bool}
81
     */
NEW
82
    private function resolveOptions(array $options): array
×
83
    {
NEW
84
        $optionsResolver = new OptionsResolver\OptionsResolver();
×
NEW
85
        $optionsResolver->define('documentation')
×
NEW
86
            ->allowedTypes('bool')
×
NEW
87
            ->default(false)
×
NEW
88
        ;
×
89

90
        /* @phpstan-ignore return.type */
NEW
91
        return $optionsResolver->resolve($options);
×
92
    }
93
}
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