2026-09-09 23:58:20 +00:00
|
|
|
<?php
|
2026-09-10 19:36:00 +00:00
|
|
|
/**
|
|
|
|
|
* File: config/bootstrap.php
|
|
|
|
|
*
|
|
|
|
|
* Author: Funky Waddle
|
|
|
|
|
* Date: 2026-09-10
|
|
|
|
|
*
|
|
|
|
|
* Purpose:
|
|
|
|
|
* Bootstrap configuration and DI container.
|
|
|
|
|
*/
|
2026-09-09 23:58:20 +00:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
2026-09-11 04:52:57 +00:00
|
|
|
use SiteWeaver\Core\Container;
|
|
|
|
|
use SiteWeaver\Core\Config;
|
|
|
|
|
use SiteWeaver\Core\Router;
|
|
|
|
|
use Infisical\SDK\InfisicalSDK;
|
|
|
|
|
use Infisical\SDK\Models\ListSecretsParameters;
|
|
|
|
|
|
2026-09-09 23:58:20 +00:00
|
|
|
require __DIR__ . '/../vendor/autoload.php';
|
|
|
|
|
|
2026-09-11 04:52:57 +00:00
|
|
|
load_env();
|
2026-09-09 23:58:20 +00:00
|
|
|
|
|
|
|
|
$mergedEnv = $_ENV + $_SERVER;
|
|
|
|
|
|
|
|
|
|
$container = new Container();
|
2026-09-10 19:17:19 +00:00
|
|
|
|
|
|
|
|
// Register core services
|
|
|
|
|
$router = new Router();
|
2026-09-11 04:52:57 +00:00
|
|
|
$config = new Config();
|
|
|
|
|
$config->load($mergedEnv);
|
2026-09-10 19:17:19 +00:00
|
|
|
$container->add('router', $router);
|
2026-09-11 04:52:57 +00:00
|
|
|
$container->add('config', $config);
|
2026-09-09 23:58:20 +00:00
|
|
|
|
|
|
|
|
return $container;
|
2026-09-11 04:52:57 +00:00
|
|
|
|
|
|
|
|
function load_env(): void {
|
|
|
|
|
// Load .env file if there is one
|
|
|
|
|
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/..');
|
|
|
|
|
$dotenv->safeLoad();
|
|
|
|
|
|
|
|
|
|
// Load Infisical vars if set
|
|
|
|
|
$url = $_ENV['INFISICAL_URL'] ?? null;
|
|
|
|
|
$machine_id = $_ENV['INFISICAL_MACHINE_ID'] ?? null;
|
|
|
|
|
$secret_id = $_ENV['INFISICAL_SECRET_ID'] ?? null;
|
|
|
|
|
$project_id = $_ENV['INFISICAL_PROJECT_ID'] ?? null;
|
|
|
|
|
$env = $_ENV['INFISICAL_ENV'] ?? null;
|
|
|
|
|
|
|
|
|
|
if (!empty($url)) {
|
|
|
|
|
$sdk = new InfisicalSDK($url);
|
|
|
|
|
|
|
|
|
|
$response = $sdk->auth()->universalAuth()->login($machine_id, $secret_id);
|
|
|
|
|
|
|
|
|
|
$params = new ListSecretsParameters(
|
|
|
|
|
environment: $env,
|
|
|
|
|
secretPath: "/",
|
|
|
|
|
projectId: $project_id
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$secrets = $sdk->secrets()->list($params);
|
|
|
|
|
|
|
|
|
|
foreach ($secrets as $secret) {
|
|
|
|
|
putenv("{$secret->secretKey}={$secret->secretValue}");
|
|
|
|
|
$_ENV[$secret->secretKey] = $secret->secretValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|