Skip to content

Commit 6f1b5eb

Browse files
authored
Merge pull request #2 from blamebutton/move-helpers-to-container
Add PhpExtensionsQuestionTest
2 parents 6dc0c6d + c47df1d commit 6f1b5eb

32 files changed

+298
-104
lines changed

phpunit.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@
1616
<directory suffix=".php">src</directory>
1717
</include>
1818

19+
<exclude>
20+
<file>src/helpers.php</file>
21+
</exclude>
22+
1923
<report>
2024
<html outputDirectory=".coverage"/>
21-
<text outputFile="php://stdout"/>
25+
<text outputFile="php://stdout" showOnlySummary="true"/>
2226
</report>
2327
</coverage>
2428
</phpunit>

src/Commands/DockerCiCommand.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace BlameButton\LaravelDockerBuilder\Commands;
44

55
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\CiPlatform;
6-
use BlameButton\LaravelDockerBuilder\Detector\CiPlatformDetector;
6+
use BlameButton\LaravelDockerBuilder\Detectors\CiPlatformDetector;
77

88
class DockerCiCommand extends BaseCommand
99
{
@@ -19,9 +19,13 @@ public function handle(): int
1919
$output = base_path('.gitlab-ci.yml');
2020

2121
if (file_exists($output)) {
22+
$this->info('Detected GitLab, but [.gitlab-ci.yml] file already exists.');
23+
2224
return self::SUCCESS;
2325
}
2426

27+
$this->info(sprintf('Detected GitLab, copying [.gitlab-ci.yml] to [%s].', dirname($output)));
28+
2529
copy(package_path('resources/templates/.gitlab-ci.yml'), $output);
2630
}
2731

src/Commands/GenerateQuestions/NodeBuildToolQuestion.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
66
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodeBuildTool;
7-
use BlameButton\LaravelDockerBuilder\Detector\NodeBuildToolDetector;
7+
use BlameButton\LaravelDockerBuilder\Detectors\NodeBuildToolDetector;
88
use BlameButton\LaravelDockerBuilder\Exceptions\InvalidOptionValueException;
99

1010
class NodeBuildToolQuestion extends BaseQuestion

src/Commands/GenerateQuestions/NodePackageManagerQuestion.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
66
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\NodePackageManager;
7-
use BlameButton\LaravelDockerBuilder\Detector\NodePackageManagerDetector;
7+
use BlameButton\LaravelDockerBuilder\Detectors\NodePackageManagerDetector;
88
use BlameButton\LaravelDockerBuilder\Exceptions\InvalidOptionValueException;
99

1010
class NodePackageManagerQuestion extends BaseQuestion

src/Commands/GenerateQuestions/PhpExtensionsQuestion.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
66
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpExtensions;
7-
use BlameButton\LaravelDockerBuilder\Detector\PhpExtensionsDetector;
7+
use BlameButton\LaravelDockerBuilder\Detectors\PhpExtensionsDetector;
88
use BlameButton\LaravelDockerBuilder\Exceptions\InvalidOptionValueException;
99

1010
class PhpExtensionsQuestion extends BaseQuestion
@@ -21,37 +21,39 @@ class PhpExtensionsQuestion extends BaseQuestion
2121
*/
2222
public function getAnswer(BaseCommand $command, string $phpVersion): array
2323
{
24-
$supportedExtensions = PhpExtensions::values($phpVersion);
24+
$supported = PhpExtensions::values($phpVersion);
2525

2626
if ($option = $command->option('php-extensions')) {
2727
$extensions = explode(',', $option);
2828

2929
foreach ($extensions as $extension) {
30-
if (in_array($extension, $supportedExtensions)) {
30+
if (in_array($extension, $supported)) {
3131
continue;
3232
}
3333

3434
throw new InvalidOptionValueException("Extension [$extension] is not supported.");
3535
}
3636

37-
return array_intersect($extensions, $supportedExtensions);
37+
return array_intersect($extensions, $supported);
3838
}
3939

40-
$detected = app(PhpExtensionsDetector::class, ['supportedExtensions' => $supportedExtensions])->detect();
40+
$detected = app(PhpExtensionsDetector::class)
41+
->supported($supported)
42+
->detect();
4143

4244
if ($command->option('detect')) {
4345
$detected = explode(',', $detected);
4446

4547
foreach ($detected as $key => $value) {
46-
$detected[$key] = $supportedExtensions[$value];
48+
$detected[$key] = $supported[$value];
4749
}
4850

4951
return $detected;
5052
}
5153

5254
return $command->choice(
5355
question: 'PHP extensions',
54-
choices: $supportedExtensions,
56+
choices: $supported,
5557
default: $detected,
5658
multiple: true,
5759
);

src/Commands/GenerateQuestions/PhpVersionQuestion.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use BlameButton\LaravelDockerBuilder\Commands\BaseCommand;
66
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\PhpVersion;
7-
use BlameButton\LaravelDockerBuilder\Detector\PhpVersionDetector;
7+
use BlameButton\LaravelDockerBuilder\Detectors\PhpVersionDetector;
88
use BlameButton\LaravelDockerBuilder\Exceptions\InvalidOptionValueException;
99

1010
class PhpVersionQuestion extends BaseQuestion

src/Detector/CiPlatformDetector.php

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/Detectors/CiPlatformDetector.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace BlameButton\LaravelDockerBuilder\Detectors;
4+
5+
use BlameButton\LaravelDockerBuilder\Commands\GenerateQuestions\Choices\CiPlatform;
6+
use Illuminate\Support\Str;
7+
8+
class CiPlatformDetector implements DetectorContract
9+
{
10+
public function detect(): string|false
11+
{
12+
$config = base_path('.git/config');
13+
14+
if (! file_exists($config)) {
15+
return false;
16+
}
17+
18+
$config = file_get_contents($config);
19+
20+
if (Str::contains($config, 'gitlab')) {
21+
return CiPlatform::GITLAB_CI;
22+
}
23+
24+
if (Str::contains($config, 'github')) {
25+
return CiPlatform::GITHUB_ACTIONS;
26+
}
27+
28+
return false;
29+
}
30+
}

src/Detector/DetectorContract.php renamed to src/Detectors/DetectorContract.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace BlameButton\LaravelDockerBuilder\Detector;
3+
namespace BlameButton\LaravelDockerBuilder\Detectors;
44

55
interface DetectorContract
66
{

src/Detector/FileDetector.php renamed to src/Detectors/FileDetector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace BlameButton\LaravelDockerBuilder\Detector;
3+
namespace BlameButton\LaravelDockerBuilder\Detectors;
44

55
abstract class FileDetector implements DetectorContract
66
{

0 commit comments

Comments
 (0)