-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbootstrap.php
71 lines (56 loc) · 1.99 KB
/
bootstrap.php
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
namespace {
require_once __DIR__ . '/vendor/autoload.php';
define('ROOT_DIR', __DIR__);
is_dir(ROOT_DIR . '/logs') || mkdir(ROOT_DIR . '/logs');
define('TRANSPHER_VERSION', file_get_contents(__DIR__ . '/VERSION'));
$dotenv_file = ROOT_DIR . '/.env';
is_file($dotenv_file) || touch($dotenv_file);
$dotenv = Dotenv\Dotenv::createMutable(dirname($dotenv_file));
$dotenv->load();
if (function_exists('array_find') === false) {
/**
* PHP 8.4 compat
* @param array $array
* @param callable $callback
* @return mixed
*/
function array_find(array $array, callable $callback): mixed {
foreach ($array as $key => $value) {
if ($callback($value, $key)) {
return $value;
}
}
return null;
}
}
function iterator_map(\Traversable $iterator, callable $callback): \Traversable {
foreach ($iterator as $key => $value) {
yield $key => $callback($value);
}
}
function in_range(string|int|float $value, string|int|float $start, string|int|float $end): bool {
return in_array($value, range($start, $end));
}
use Monolog\Level;
function translate_loglevel(string $loglevel): Level {
return match (strtoupper($loglevel)) {
'DEBUG' => Level::Debug,
'NOTICE' => Level::Notice,
'INFO' => Level::Info,
'WARNING' => Level::Warning,
'ERROR' => Level::Error,
'CRITICAL' => Level::Critical,
'ALERT' => Level::Alert,
'EMERGENCY' => Level::Emergency,
default => Level::Info
};
}
return function (string $identifier, string $stdout_level, string $logfile_level): Psr\Log\LoggerInterface {
$log = new Monolog\Logger($identifier);
$log->pushHandler(new Monolog\Handler\StreamHandler(__DIR__ . '/logs/' . $identifier . '.log', translate_loglevel($logfile_level)));
$log->pushHandler(new Monolog\Handler\StreamHandler(STDOUT, translate_loglevel($stdout_level)));
Monolog\ErrorHandler::register($log);
return $log;
};
}