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

eliashaeussler / version-bumper / 24362442800

13 Apr 2026 07:24PM UTC coverage: 76.092% (-11.9%) from 87.996%
24362442800

Pull #125

github

eliashaeussler
[FEATURE] Introduce actions
Pull Request #125: [FEATURE] Introduce actions

71 of 258 new or added lines in 20 files covered. (27.52%)

3 existing lines in 3 files now uncovered.

923 of 1213 relevant lines covered (76.09%)

4.14 hits per line

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

0.0
/src/Version/Action/PackageLockAction.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-2026 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\Version\Action;
25

26
use EliasHaeussler\VersionBumper\Config;
27
use EliasHaeussler\VersionBumper\Result;
28
use Symfony\Component\Console;
29
use Symfony\Component\Process;
30

31
use function dirname;
32

33
/**
34
 * PackageLockAction.
35
 *
36
 * @author Elias Häußler <elias@haeussler.dev>
37
 * @license GPL-3.0-or-later
38
 */
39
final readonly class PackageLockAction implements Action
40
{
NEW
41
    public function execute(
×
42
        string $rootPath,
43
        Config\FileToModify $sourceFile,
44
        Console\Output\OutputInterface $output,
45
    ): Result\ActionExecutionResult {
NEW
46
        $npmPrefix = dirname($sourceFile->fullPath($rootPath));
×
NEW
47
        $lockFilename = $npmPrefix.'/package-lock.json';
×
NEW
48
        $resultOutput = new Console\Output\BufferedOutput();
×
49

NEW
50
        $process = new Process\Process([
×
NEW
51
            'npm',
×
NEW
52
            'install',
×
NEW
53
            '--prefix',
×
NEW
54
            $npmPrefix,
×
NEW
55
            '--package-lock-only',
×
NEW
56
        ]);
×
57

NEW
58
        $exitCode = $process->run();
×
59

NEW
60
        if ($process->isSuccessful()) {
×
NEW
61
            return Result\ActionExecutionResult::success($this, [
×
NEW
62
                new Result\VersionBumpResult(
×
NEW
63
                    new Config\FileToModify($lockFilename),
×
NEW
64
                    [
×
NEW
65
                        Result\WriteOperation::regenerated(),
×
NEW
66
                    ],
×
NEW
67
                ),
×
NEW
68
            ]);
×
69
        }
70

71
        // Merge stdout and stderr
NEW
72
        $resultOutput->writeln($process->getOutput());
×
NEW
73
        $resultOutput->writeln($process->getErrorOutput());
×
74

NEW
75
        return new Result\ActionExecutionResult($this, $exitCode, [], $resultOutput->fetch());
×
76
    }
77

NEW
78
    public static function getIdentifier(): string
×
79
    {
NEW
80
        return 'package-lock';
×
81
    }
82
}
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

© 2026 Coveralls, Inc