aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/app/src/Config.php
blob: 16bf6b1311601753582005d71cd056f50d4d7556 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php

declare(strict_types=1);

namespace Nsfisis\Albatross;

final class Config
{
    public function __construct(
        public readonly string $basePath,
        public readonly string $siteName,
        public readonly bool $displayErrors,
        public readonly string $dbHost,
        public readonly int $dbPort,
        public readonly string $dbName,
        public readonly string $dbUser,
        public readonly string $dbPassword,
        public readonly string $forteeApiEndpoint,
    ) {
    }

    public static function fromEnvVars(): self
    {
        return new self(
            basePath: self::getEnvVar('ALBATROSS_BASE_PATH'),
            siteName: self::getEnvVar('ALBATROSS_SITE_NAME'),
            displayErrors: self::getEnvVar('ALBATROSS_DISPLAY_ERRORS') === '1',
            dbHost: self::getEnvVar('ALBATROSS_DB_HOST'),
            dbPort: (int) self::getEnvVar('ALBATROSS_DB_PORT'),
            dbName: self::getEnvVar('ALBATROSS_DB_NAME'),
            dbUser: self::getEnvVar('ALBATROSS_DB_USER'),
            dbPassword: self::getEnvVar('ALBATROSS_DB_PASSWORD'),
            forteeApiEndpoint: self::getEnvVar('ALBATROSS_FORTEE_API_ENDPOINT'),
        );
    }

    private static function getEnvVar(string $name): string
    {
        $value = getenv($name);
        if ($value === false) {
            throw new \RuntimeException("Environment variable \${$name} not set");
        }
        return $value;
    }
}