modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2025-10-03 03:28:52 +04:00
parent d7f82a2fd9
commit 8c72c5c3eb
4 changed files with 28 additions and 9 deletions

View File

@ -251,7 +251,6 @@ class app {
$name = preg_replace('/.*\\\\/', "", $name);
$name = str::camel2us($name, false, "-");
$name = str::without_suffix("-app", $name);
$name .= ".php";
}
$this->appgroup = $appgroup;
$this->name = $name;

View File

@ -246,9 +246,14 @@ EOT);
const PROFILE_SECTION = [
"title" => "PROFIL D'EXECUTION",
"show" => false,
["-c", "--config", "--app-config",
"args" => "file", "argsdesc" => "CONFIG.yml",
"action" => [config::class, "load_config"],
"help" => "spécifier un fichier de configuration",
],
["group",
["-p", "--profile", "--app-profile",
"args" => "profile",
["-g", "--profile", "--app-profile",
"args" => 1, "argsdesc" => "PROFILE",
"action" => [app::class, "set_profile"],
"help" => "spécifier le profil d'exécution",
],

View File

@ -2,7 +2,12 @@
namespace nulib\app;
use nulib\app\config\ConfigManager;
use nulib\app\config\JsonConfig;
use nulib\app\config\YamlConfig;
use nulib\cl;
use nulib\os\path;
use nulib\str;
use nulib\ValueException;
/**
* Class config: gestion de la configuration de l'application
@ -27,6 +32,18 @@ class config {
}
static final function add($config, string ...$profiles): void { self::$config->addConfig($config, $profiles); }
static final function load_config($file): void {
$ext = path::ext($file);
if ($ext === ".yml" || $ext === ".yaml") {
$config = new YamlConfig($file);
} elseif ($ext === ".json") {
$config = new JsonConfig($file);
} else {
throw ValueException::invalid_value($file, "config file");
}
self::add($config);
}
static final function get(string $pkey, $default=null, ?string $profile=null) { return self::$config->getValue($pkey, $default, $profile); }
static final function k(string $pkey, $default=null) { return self::$config->getValue("app.$pkey", $default); }
static final function db(string $pkey, $default=null) { return self::$config->getValue("dbs.$pkey", $default); }

View File

@ -76,7 +76,7 @@ class ConfigManager {
* $config est un objet ou une classe qui définit une ou plusieurs des
* constantes APP, DBS, MSGS, MAILS
*
* si $inProfiles===null, la configuration est valide dans tous les profils
* si !$inProfiles, la configuration est valide dans tous les profils
*/
function addConfig($config, ?array $inProfiles=null): void {
if (is_string($config)) {
@ -96,7 +96,7 @@ class ConfigManager {
throw ValueException::invalid_type($config, "array|IConfig");
}
$inProfiles ??= [IConfig::PROFILE_ALL];
if (!$inProfiles) $inProfiles = [IConfig::PROFILE_ALL];
foreach ($inProfiles as $profile) {
$this->profileConfigs[$profile][] = $config;
}
@ -107,18 +107,16 @@ class ConfigManager {
function _getValue(string $pkey, $default, string $inProfile) {
$profiles = [$inProfile];
if ($inProfile !== IConfig::PROFILE_ALL) $profiles[] = IConfig::PROFILE_ALL;
$value = $default;
foreach ($profiles as $profile) {
/** @var IConfig[] $configs */
$configs = $this->profileConfigs[$profile] ?? [];
foreach (array_reverse($configs) as $config) {
if ($config->has($pkey, $profile)) {
$value = $config->get($pkey, $profile);
break;
return $config->get($pkey, $profile);
}
}
}
return $value;
return $default;
}
/**