← Code-Übersicht

sync-code.php

Pfad: sync-code.php

Ext: php

Größe: 1693 Bytes

Geändert: 2026-07-16 17:54:41+02

<?php
declare(strict_types=1);

use Demo\Application\Code\SynchronisiereCodeDateien;
use Demo\Autoloader;
use Demo\Infrastructure\Code\CodeDateiScanner;
use Demo\Infrastructure\Config\CredentialsProvider;
use Demo\Infrastructure\Config\DatabaseCredentials;
use Demo\Infrastructure\Persistence\PdoConnectionFactory;
use Demo\Infrastructure\Persistence\PostgresCodeDateiRepository;

require __DIR__ . '/src/Autoloader.php';
(new Autoloader(__DIR__ . '/src'))->register();

if (PHP_SAPI !== 'cli') {
    fwrite(STDERR, "Nur CLI-Aufruf erlaubt\n");
    exit(2);
}

try {
    $peerDatabase = getenv('CODE_SYNC_PEER_DATABASE');
    if (is_string($peerDatabase) && $peerDatabase !== '') {
        if (preg_match('/^[a-z0-9_]+$/', $peerDatabase) !== 1) {
            throw new RuntimeException('Ungueltiger Peer-Datenbankname');
        }
        $credentials = new DatabaseCredentials(
            'pgsql:host=/var/run/postgresql;dbname=' . $peerDatabase,
            '',
            '',
        );
    } else {
        $credentialsDir = getenv('APP_CREDENTIALS_DIR') ?: __DIR__ . '/credentials';
        $credentials = (new CredentialsProvider($credentialsDir))->database();
    }
    $factory = new PdoConnectionFactory($credentials);
    $repository = new PostgresCodeDateiRepository($factory);
    $scanner = new CodeDateiScanner(__DIR__);
    $files = $scanner->scan();
    (new SynchronisiereCodeDateien($repository))->execute($files);
    fwrite(STDOUT, json_encode(['ok' => true, 'files' => count($files)], JSON_THROW_ON_ERROR) . "\n");
} catch (Throwable $error) {
    fwrite(STDERR, json_encode(['ok' => false, 'error' => $error->getMessage()], JSON_THROW_ON_ERROR) . "\n");
    exit(1);
}

Frühere Versionen

Version Zeitpunkt Operation
44 2026-07-16 19:55:01.890617+02 UPDATE