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

eliashaeussler / version-bumper / 12732622834

12 Jan 2025 10:18AM UTC coverage: 89.29% (+0.5%) from 88.745%
12732622834

Pull #17

github

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

100 of 110 new or added lines in 6 files covered. (90.91%)

4 existing lines in 1 file now uncovered.

717 of 803 relevant lines covered (89.29%)

3.89 hits per line

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

87.5
/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

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

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

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

69
        return new Config\VersionBumperConfig(filesToModify: $filesToModify);
1✔
70
    }
71

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

NEW
77
    public static function getDescription(): string
×
78
    {
NEW
79
        return 'TYPO3 extension, managed by ext_emconf.php';
×
80
    }
81

82
    /**
83
     * @param array<string, mixed> $options
84
     *
85
     * @return array{documentation: bool}
86
     */
87
    private function resolveOptions(array $options): array
1✔
88
    {
89
        $optionsResolver = new OptionsResolver\OptionsResolver();
1✔
90
        $optionsResolver->define('documentation')
1✔
91
            ->allowedTypes('bool')
1✔
92
            ->default(false)
1✔
93
        ;
1✔
94

95
        /* @phpstan-ignore return.type */
96
        return $optionsResolver->resolve($options);
1✔
97
    }
98
}
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