Skip to content

Commit 6eb8577

Browse files
Eliminate code duplication
1 parent b126330 commit 6eb8577

File tree

1 file changed

+32
-24
lines changed

1 file changed

+32
-24
lines changed

build/scripts/phar-manifest.php

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ function manifest(string $outputFilename, array $package, string $version, array
2929
);
3030

3131
foreach ($dependencies as $dependency) {
32-
$buffer .= $dependency['name'] . ': ' . $dependency['version'];
33-
34-
if (!preg_match('/^[v= ]*(([0-9]+)(\\.([0-9]+)(\\.([0-9]+)(-([0-9]+))?(-?([a-zA-Z-+][a-zA-Z0-9.\\-:]*)?)?)?)?)$/', $dependency['version'])) {
35-
$buffer .= '@' . $dependency['source']['reference'];
36-
}
37-
38-
$buffer .= "\n";
32+
$buffer .= sprintf(
33+
'%s: %s' . "\n",
34+
$dependency['name'],
35+
versionWithReference(
36+
$dependency['version'],
37+
$dependency['source']['reference']
38+
)
39+
);
3940
}
4041

4142
file_put_contents($outputFilename, $buffer);
@@ -64,18 +65,16 @@ function sbom(string $outputFilename, array $package, string $version, array $de
6465
);
6566

6667
foreach ($dependencies as $dependency) {
67-
[$group, $name] = explode('/', $dependency['name']);
68-
$dependencyVersion = $dependency['version'];
69-
70-
if (!preg_match('/^[v= ]*(([0-9]+)(\\.([0-9]+)(\\.([0-9]+)(-([0-9]+))?(-?([a-zA-Z-+][a-zA-Z0-9.\\-:]*)?)?)?)?)$/', $dependencyVersion)) {
71-
$dependencyVersion .= '@' . $dependency['source']['reference'];
72-
}
68+
[$group, $name] = explode('/', $dependency['name']);
7369

7470
writeComponent(
7571
$writer,
7672
$group,
7773
$name,
78-
$dependencyVersion,
74+
versionWithReference(
75+
$dependency['version'],
76+
$dependency['source']['reference']
77+
),
7978
$dependency['description'],
8079
$dependency['license']
8180
);
@@ -88,16 +87,6 @@ function sbom(string $outputFilename, array $package, string $version, array $de
8887
file_put_contents($outputFilename, $writer->outputMemory());
8988
}
9089

91-
function dependencies(): array
92-
{
93-
return json_decode(
94-
file_get_contents(
95-
__DIR__ . '/../../composer.lock'
96-
),
97-
true
98-
)['packages'];
99-
}
100-
10190
function package(): array
10291
{
10392
$data = json_decode(
@@ -131,6 +120,25 @@ function version(): string
131120
return $branch . '@' . $hash;
132121
}
133122

123+
function dependencies(): array
124+
{
125+
return json_decode(
126+
file_get_contents(
127+
__DIR__ . '/../../composer.lock'
128+
),
129+
true
130+
)['packages'];
131+
}
132+
133+
function versionWithReference(string $version, string $reference): string
134+
{
135+
if (!preg_match('/^[v= ]*(([0-9]+)(\\.([0-9]+)(\\.([0-9]+)(-([0-9]+))?(-?([a-zA-Z-+][a-zA-Z0-9.\\-:]*)?)?)?)?)$/', $version)) {
136+
$version .= '@' . $reference;
137+
}
138+
139+
return $version;
140+
}
141+
134142
function writeComponent(XMLWriter $writer, string $group, string $name, string $version, string $description, array $licenses): void
135143
{
136144
$writer->startElement('component');

0 commit comments

Comments
 (0)