- Add icanhazstring/composer-unused as dev dependency for dependency hygiene checks - Add German documentation (docs/) covering architecture, conventions, workflows, and developer checklists - Add API layer (ApiAuth, ApiBootstrap, ApiResponse), audit, scheduler, custom fields, and SSO services - Add Microsoft OIDC SSO, API token management, and user lifecycle features - Add swagger-ui vendor integration and OpenAPI spec - Add production Docker setup and bin/ scripts - Update composer dependencies, config, templates, and frontend assets throughout Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
40 lines
1.1 KiB
PHP
Executable File
40 lines
1.1 KiB
PHP
Executable File
#!/usr/bin/env php
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
chdir(__DIR__ . '/..');
|
|
|
|
require 'vendor/autoload.php';
|
|
require 'config/config.php';
|
|
require 'lib/Support/helpers.php';
|
|
|
|
use MintyPHP\DB;
|
|
use MintyPHP\Service\Scheduler\SchedulerRunService;
|
|
|
|
$exitCode = 0;
|
|
try {
|
|
$result = SchedulerRunService::runDueJobs();
|
|
if (!($result['ok'] ?? false)) {
|
|
$error = (string) ($result['error'] ?? 'unexpected_error');
|
|
fwrite(STDERR, sprintf("scheduler run failed: %s\n", $error));
|
|
$exitCode = 1;
|
|
} else {
|
|
$line = sprintf(
|
|
"scheduler completed: processed=%d success=%d failed=%d skipped=%d duration_ms=%d\n",
|
|
(int) ($result['processed'] ?? 0),
|
|
(int) ($result['success'] ?? 0),
|
|
(int) ($result['failed'] ?? 0),
|
|
(int) ($result['skipped'] ?? 0),
|
|
(int) ($result['duration_ms'] ?? 0)
|
|
);
|
|
fwrite(STDOUT, $line);
|
|
}
|
|
} catch (Throwable $exception) {
|
|
fwrite(STDERR, sprintf("scheduler run failed: unexpected_error: %s\n", $exception->getMessage()));
|
|
$exitCode = 1;
|
|
} finally {
|
|
DB::close();
|
|
}
|
|
exit($exitCode);
|