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

eliashaeussler / gitattributes / 11573362694

29 Oct 2024 11:59AM UTC coverage: 25.0%. First build
11573362694

push

github

eliashaeussler
Initial commit

35 of 140 new or added lines in 9 files covered. (25.0%)

35 of 140 relevant lines covered (25.0%)

1.31 hits per line

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

0.0
/src/GitattributesDumper.php
1
<?php
2

3
declare(strict_types=1);
4

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

26
use Symfony\Component\Filesystem;
27

28
use function file_exists;
29
use function file_put_contents;
30
use function implode;
31

32
/**
33
 * GitattributesDumper.
34
 *
35
 * @author Elias Häußler <elias@haeussler.dev>
36
 * @license GPL-3.0-or-later
37
 */
38
final class GitattributesDumper
39
{
NEW
40
    public function __construct(
×
41
        private readonly string $rootPath,
NEW
42
    ) {}
×
43

44
    /**
45
     * @param list<Entity\Rule> $rules
46
     *
47
     * @throws Exception\FileAlreadyExists
48
     */
NEW
49
    public function dump(string $filename, array $rules): bool
×
50
    {
NEW
51
        $file = Filesystem\Path::join($this->rootPath, $filename);
×
NEW
52
        $lines = [];
×
53

NEW
54
        if (file_exists($file)) {
×
NEW
55
            throw new Exception\FileAlreadyExists($file);
×
56
        }
57

NEW
58
        foreach ($rules as $rule) {
×
NEW
59
            $lines[] = $rule->toString();
×
60
        }
61

62
        // Add final newline
NEW
63
        $lines[] = '';
×
64

NEW
65
        if (false !== file_put_contents($file, implode(PHP_EOL, $lines))) {
×
NEW
66
            return true;
×
67
        }
68

NEW
69
        return false;
×
70
    }
71
}
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