Code Duplication    Length = 75-75 lines in 2 locations

src/Checks/ExampleEnvironmentVariablesAreSet.php 1 location

@@ 8-82 (lines=75) @@
5
use Dotenv\Dotenv;
6
use Illuminate\Support\Collection;
7
8
class ExampleEnvironmentVariablesAreSet implements Check
9
{
10
    /** @var Collection */
11
    private $envVariables;
12
13
    /**
14
     * The name of the check.
15
     *
16
     * @param array $config
17
     * @return string
18
     */
19
    public function name(array $config): string
20
    {
21
        return trans('self-diagnosis::checks.example_environment_variables_are_set.name');
22
    }
23
24
    /**
25
     * Perform the actual verification of this check.
26
     *
27
     * @param array $config
28
     * @return bool
29
     */
30
    public function check(array $config): bool
31
    {
32
        if (method_exists(Dotenv::class, 'createImmutable')) {
33
            return $this->checkForDotEnvV4();
34
        }
35
36
        if (interface_exists(\Dotenv\Environment\FactoryInterface::class)) {
37
            $examples = Dotenv::create(base_path(), '.env.example');
38
            $actual = Dotenv::create(base_path(), '.env');
39
        } else {
40
            $examples = new Dotenv(base_path(), '.env.example');
41
            $actual = new Dotenv(base_path(), '.env');
42
        }
43
44
        $examples->safeLoad();
45
        $actual->safeLoad();
46
47
        $this->envVariables = Collection::make($examples->getEnvironmentVariableNames())
48
            ->diff($actual->getEnvironmentVariableNames());
49
50
        return $this->envVariables->isEmpty();
51
    }
52
53
    /**
54
     * Perform the verification of this check for DotEnv v4.
55
     *
56
     * @return bool
57
     */
58
    private function checkForDotEnvV4(): bool
59
    {
60
        $examples = Dotenv::createImmutable(base_path(), '.env.example');
61
        $actual = Dotenv::createImmutable(base_path(), '.env');
62
63
        $this->envVariables = Collection::make($examples->safeLoad())
64
            ->diffKeys($actual->safeLoad())
65
            ->keys();
66
67
        return $this->envVariables->isEmpty();
68
    }
69
70
    /**
71
     * The error message to display in case the check does not pass.
72
     *
73
     * @param array $config
74
     * @return string
75
     */
76
    public function message(array $config): string
77
    {
78
        return trans('self-diagnosis::checks.example_environment_variables_are_set.message', [
79
            'variables' => $this->envVariables->implode(PHP_EOL),
80
        ]);
81
    }
82
}
83

src/Checks/ExampleEnvironmentVariablesAreUpToDate.php 1 location

@@ 8-82 (lines=75) @@
5
use Dotenv\Dotenv;
6
use Illuminate\Support\Collection;
7
8
class ExampleEnvironmentVariablesAreUpToDate implements Check
9
{
10
    /** @var Collection */
11
    private $envVariables;
12
13
    /**
14
     * The name of the check.
15
     *
16
     * @param array $config
17
     * @return string
18
     */
19
    public function name(array $config): string
20
    {
21
        return trans('self-diagnosis::checks.example_environment_variables_are_up_to_date.name');
22
    }
23
24
    /**
25
     * Perform the actual verification of this check.
26
     *
27
     * @param array $config
28
     * @return bool
29
     */
30
    public function check(array $config): bool
31
    {
32
        if (method_exists(Dotenv::class, 'createImmutable')) {
33
            return $this->checkForDotEnvV4();
34
        }
35
36
        if (interface_exists(\Dotenv\Environment\FactoryInterface::class)) {
37
            $examples = Dotenv::create(base_path(), '.env.example');
38
            $actual = Dotenv::create(base_path(), '.env');
39
        } else {
40
            $examples = new Dotenv(base_path(), '.env.example');
41
            $actual = new Dotenv(base_path(), '.env');
42
        }
43
44
        $examples->safeLoad();
45
        $actual->safeLoad();
46
47
        $this->envVariables = Collection::make($actual->getEnvironmentVariableNames())
48
            ->diff($examples->getEnvironmentVariableNames());
49
50
        return $this->envVariables->isEmpty();
51
    }
52
53
    /**
54
     * Perform the verification of this check for DotEnv v4.
55
     *
56
     * @return bool
57
     */
58
    private function checkForDotEnvV4(): bool
59
    {
60
        $examples = Dotenv::createImmutable(base_path(), '.env.example');
61
        $actual = Dotenv::createImmutable(base_path(), '.env');
62
63
        $this->envVariables = Collection::make($actual->safeLoad())
64
            ->diffKeys($examples->safeLoad())
65
            ->keys();
66
67
        return $this->envVariables->isEmpty();
68
    }
69
70
    /**
71
     * The error message to display in case the check does not pass.
72
     *
73
     * @param array $config
74
     * @return string
75
     */
76
    public function message(array $config): string
77
    {
78
        return trans('self-diagnosis::checks.example_environment_variables_are_up_to_date.message', [
79
            'variables' => $this->envVariables->implode(PHP_EOL),
80
        ]);
81
    }
82
}
83