modifs.mineures sans commentaires
This commit is contained in:
parent
efb7901498
commit
58af45cc99
@ -28,7 +28,7 @@ class app {
|
|||||||
"class" => $class,
|
"class" => $class,
|
||||||
"projdir" => $app::PROJDIR,
|
"projdir" => $app::PROJDIR,
|
||||||
"vendor" => $app::VENDOR,
|
"vendor" => $app::VENDOR,
|
||||||
"appcode" => $app::APPCODE,
|
"projcode" => $app::PROJCODE,
|
||||||
"datadir" => $app::DATADIR,
|
"datadir" => $app::DATADIR,
|
||||||
"etcdir" => $app::ETCDIR,
|
"etcdir" => $app::ETCDIR,
|
||||||
"vardir" => $app::VARDIR,
|
"vardir" => $app::VARDIR,
|
||||||
@ -43,7 +43,7 @@ class app {
|
|||||||
"class" => $class,
|
"class" => $class,
|
||||||
"projdir" => constant("$app::PROJDIR"),
|
"projdir" => constant("$app::PROJDIR"),
|
||||||
"vendor" => constant("$app::VENDOR"),
|
"vendor" => constant("$app::VENDOR"),
|
||||||
"appcode" => constant("$app::APPCODE"),
|
"projcode" => constant("$app::PROJCODE"),
|
||||||
"datadir" => constant("$app::DATADIR"),
|
"datadir" => constant("$app::DATADIR"),
|
||||||
"etcdir" => constant("$app::ETCDIR"),
|
"etcdir" => constant("$app::ETCDIR"),
|
||||||
"vardir" => constant("$app::VARDIR"),
|
"vardir" => constant("$app::VARDIR"),
|
||||||
@ -75,7 +75,7 @@ class app {
|
|||||||
A::merge($params, cl::select($proj_params, [
|
A::merge($params, cl::select($proj_params, [
|
||||||
"projdir",
|
"projdir",
|
||||||
"vendor",
|
"vendor",
|
||||||
"appcode",
|
"projcode",
|
||||||
"cwd",
|
"cwd",
|
||||||
"datadir",
|
"datadir",
|
||||||
"etcdir",
|
"etcdir",
|
||||||
@ -156,7 +156,7 @@ class app {
|
|||||||
[
|
[
|
||||||
"projdir" => $projdir,
|
"projdir" => $projdir,
|
||||||
"vendor" => $vendor,
|
"vendor" => $vendor,
|
||||||
"appcode" => $appcode,
|
"projcode" => $projcode,
|
||||||
"datadir" => $datadir,
|
"datadir" => $datadir,
|
||||||
"etcdir" => $etcdir,
|
"etcdir" => $etcdir,
|
||||||
"vardir" => $vardir,
|
"vardir" => $vardir,
|
||||||
@ -187,32 +187,32 @@ class app {
|
|||||||
$vendor = $params["vendor"] ?? self::DEFAULT_VENDOR;
|
$vendor = $params["vendor"] ?? self::DEFAULT_VENDOR;
|
||||||
$vendor["bindir"] = path::reljoin($projdir, $vendor["bindir"]);
|
$vendor["bindir"] = path::reljoin($projdir, $vendor["bindir"]);
|
||||||
$vendor["autoload"] = path::reljoin($projdir, $vendor["autoload"]);
|
$vendor["autoload"] = path::reljoin($projdir, $vendor["autoload"]);
|
||||||
# appcode
|
# projcode
|
||||||
$appcode = $params["appcode"] ?? null;
|
$projcode = $params["projcode"] ?? null;
|
||||||
if ($appcode === null) {
|
if ($projcode === null) {
|
||||||
$appcode = str::without_suffix("-app", path::basename($projdir));
|
$projcode = str::without_suffix("-app", path::basename($projdir));
|
||||||
}
|
}
|
||||||
$APPCODE = str_replace("-", "_", strtoupper($appcode));
|
$PROJCODE = str_replace("-", "_", strtoupper($projcode));
|
||||||
# cwd
|
# cwd
|
||||||
$cwd = $params["cwd"] ?? null;
|
$cwd = $params["cwd"] ?? null;
|
||||||
# datadir
|
# datadir
|
||||||
$datadir = getenv("${APPCODE}_DATADIR");
|
$datadir = getenv("${PROJCODE}_DATADIR");
|
||||||
$datadirIsDefined = $datadir !== false;
|
$datadirIsDefined = $datadir !== false;
|
||||||
if ($datadir === false) $datadir = $params["datadir"] ?? null;
|
if ($datadir === false) $datadir = $params["datadir"] ?? null;
|
||||||
if ($datadir === null) $datadir = "devel";
|
if ($datadir === null) $datadir = "devel";
|
||||||
$datadir = path::reljoin($projdir, $datadir);
|
$datadir = path::reljoin($projdir, $datadir);
|
||||||
# etcdir
|
# etcdir
|
||||||
$etcdir = getenv("${APPCODE}_ETCDIR");
|
$etcdir = getenv("${PROJCODE}_ETCDIR");
|
||||||
if ($etcdir === false) $etcdir = $params["etcdir"] ?? null;
|
if ($etcdir === false) $etcdir = $params["etcdir"] ?? null;
|
||||||
if ($etcdir === null) $etcdir = "etc";
|
if ($etcdir === null) $etcdir = "etc";
|
||||||
$etcdir = path::reljoin($datadir, $etcdir);
|
$etcdir = path::reljoin($datadir, $etcdir);
|
||||||
# vardir
|
# vardir
|
||||||
$vardir = getenv("${APPCODE}_VARDIR");
|
$vardir = getenv("${PROJCODE}_VARDIR");
|
||||||
if ($vardir === false) $vardir = $params["vardir"] ?? null;
|
if ($vardir === false) $vardir = $params["vardir"] ?? null;
|
||||||
if ($vardir === null) $vardir = "var";
|
if ($vardir === null) $vardir = "var";
|
||||||
$vardir = path::reljoin($datadir, $vardir);
|
$vardir = path::reljoin($datadir, $vardir);
|
||||||
# logdir
|
# logdir
|
||||||
$logdir = getenv("${APPCODE}_LOGDIR");
|
$logdir = getenv("${PROJCODE}_LOGDIR");
|
||||||
if ($logdir === false) $logdir = $params["logdir"] ?? null;
|
if ($logdir === false) $logdir = $params["logdir"] ?? null;
|
||||||
if ($logdir === null) $logdir = "log";
|
if ($logdir === null) $logdir = "log";
|
||||||
$logdir = path::reljoin($datadir, $logdir);
|
$logdir = path::reljoin($datadir, $logdir);
|
||||||
@ -222,7 +222,7 @@ class app {
|
|||||||
# profile
|
# profile
|
||||||
$this->profileManager = new ProfileManager([
|
$this->profileManager = new ProfileManager([
|
||||||
"app" => true,
|
"app" => true,
|
||||||
"name" => $appcode,
|
"name" => $projcode,
|
||||||
"default_profile" => $datadirIsDefined? "prod": "devel",
|
"default_profile" => $datadirIsDefined? "prod": "devel",
|
||||||
"profile" => $params["profile"] ?? null,
|
"profile" => $params["profile"] ?? null,
|
||||||
]);
|
]);
|
||||||
@ -233,7 +233,7 @@ class app {
|
|||||||
|
|
||||||
$this->projdir = $projdir;
|
$this->projdir = $projdir;
|
||||||
$this->vendor = $vendor;
|
$this->vendor = $vendor;
|
||||||
$this->appcode = $appcode;
|
$this->projcode = $projcode;
|
||||||
$this->cwd = $cwd;
|
$this->cwd = $cwd;
|
||||||
$this->datadir = $datadir;
|
$this->datadir = $datadir;
|
||||||
$this->etcdir = $etcdir;
|
$this->etcdir = $etcdir;
|
||||||
@ -244,13 +244,14 @@ class app {
|
|||||||
$appgroup = $params["appgroup"] ?? null;
|
$appgroup = $params["appgroup"] ?? null;
|
||||||
$name = $params["name"] ?? $params["class"] ?? null;
|
$name = $params["name"] ?? $params["class"] ?? null;
|
||||||
if ($name === null) {
|
if ($name === null) {
|
||||||
$name = $appcode;
|
$name = $projcode;
|
||||||
} else {
|
} else {
|
||||||
# si $name est une classe, enlever le package et normaliser i.e
|
# si $name est une classe, enlever le package et normaliser i.e
|
||||||
# my\package\MyApplication --> my-application
|
# my\package\MyApplication --> my-application.php
|
||||||
$name = preg_replace('/.*\\\\/', "", $name);
|
$name = preg_replace('/.*\\\\/', "", $name);
|
||||||
$name = str::camel2us($name, false, "-");
|
$name = str::camel2us($name, false, "-");
|
||||||
$name = str::without_suffix("-app", $name);
|
$name = str::without_suffix("-app", $name);
|
||||||
|
$name .= ".php";
|
||||||
}
|
}
|
||||||
$this->appgroup = $appgroup;
|
$this->appgroup = $appgroup;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
@ -277,10 +278,10 @@ class app {
|
|||||||
return $this->vendor["autoload"];
|
return $this->vendor["autoload"];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string $appcode;
|
protected string $projcode;
|
||||||
|
|
||||||
function getAppcode(): string {
|
function getProjcode(): string {
|
||||||
return $this->appcode;
|
return $this->projcode;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string $cwd;
|
protected string $cwd;
|
||||||
@ -432,7 +433,7 @@ class app {
|
|||||||
return [
|
return [
|
||||||
"projdir" => $this->projdir,
|
"projdir" => $this->projdir,
|
||||||
"vendor" => $this->vendor,
|
"vendor" => $this->vendor,
|
||||||
"appcode" => $this->appcode,
|
"projcode" => $this->projcode,
|
||||||
"cwd" => $this->cwd,
|
"cwd" => $this->cwd,
|
||||||
"datadir" => $this->datadir,
|
"datadir" => $this->datadir,
|
||||||
"etcdir" => $this->etcdir,
|
"etcdir" => $this->etcdir,
|
||||||
|
@ -14,7 +14,6 @@ use nulib\output\console;
|
|||||||
use nulib\output\log;
|
use nulib\output\log;
|
||||||
use nulib\output\msg;
|
use nulib\output\msg;
|
||||||
use nulib\output\std\StdMessenger;
|
use nulib\output\std\StdMessenger;
|
||||||
use nulib\ValueException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Application: application de base
|
* Class Application: application de base
|
||||||
@ -34,13 +33,13 @@ abstract class Application {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string code du projet, utilisé pour dériver le noms de certains des
|
* @var string code du projet, utilisé pour dériver le noms de certains des
|
||||||
* paramètres extraits de l'environnement, e.g XXX_YYY_DATADIR si le projet a
|
* paramètres extraits de l'environnement, e.g MY_APP_DATADIR si le projet a
|
||||||
* pour code xxx-yyy
|
* pour code my-app
|
||||||
*
|
*
|
||||||
* si non définie, cette valeur est calculée automatiquement à partir de
|
* si non définie, cette valeur est calculée automatiquement à partir de
|
||||||
* self::PROJDIR sans le suffixe "-app"
|
* self::PROJDIR sans le suffixe "-app"
|
||||||
*/
|
*/
|
||||||
const APPCODE = null;
|
const PROJCODE = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string|null identifiant d'un groupe auquel l'application appartient.
|
* @var string|null identifiant d'un groupe auquel l'application appartient.
|
||||||
@ -245,7 +244,7 @@ EOT);
|
|||||||
}
|
}
|
||||||
|
|
||||||
const PROFILE_SECTION = [
|
const PROFILE_SECTION = [
|
||||||
"title" => "PROFILS D'EXECUTION",
|
"title" => "PROFIL D'EXECUTION",
|
||||||
"show" => false,
|
"show" => false,
|
||||||
["group",
|
["group",
|
||||||
["-p", "--profile", "--app-profile",
|
["-p", "--profile", "--app-profile",
|
||||||
@ -265,79 +264,27 @@ EOT);
|
|||||||
["group",
|
["group",
|
||||||
["--verbosity",
|
["--verbosity",
|
||||||
"args" => "verbosity", "argsdesc" => "silent|quiet|verbose|debug",
|
"args" => "verbosity", "argsdesc" => "silent|quiet|verbose|debug",
|
||||||
"action" => [null, "set_application_verbosity"],
|
"action" => [console::class, "set_verbosity"],
|
||||||
"help" => "spécifier le niveau d'informations affiché",
|
"help" => "spécifier le niveau d'informations affiché",
|
||||||
],
|
],
|
||||||
["-q", "--quiet", "action" => [null, "set_application_verbosity", "quiet"]],
|
["-q", "--quiet", "action" => [console::class, "set_verbosity", "quiet"]],
|
||||||
["-v", "--verbose", "action" => [null, "set_application_verbosity", "verbose"]],
|
["-v", "--verbose", "action" => [console::class, "set_verbosity", "verbose"]],
|
||||||
["-D", "--debug", "action" => [null, "set_application_verbosity", "debug"]],
|
["-D", "--debug", "action" => [console::class, "set_verbosity", "debug"]],
|
||||||
],
|
],
|
||||||
["-L", "--logfile",
|
["-L", "--logfile",
|
||||||
"args" => "output",
|
"args" => "output",
|
||||||
"action" => [null, "set_application_log_output"],
|
"action" => [log::class, "set_output"],
|
||||||
"help" => "Logger les messages de l'application dans le fichier spécifié",
|
"help" => "Logger les messages de l'application dans le fichier spécifié",
|
||||||
],
|
],
|
||||||
["group",
|
["group",
|
||||||
["--color",
|
["--color",
|
||||||
"action" => [null, "set_application_color", true],
|
"action" => [console::class, "set_color", true],
|
||||||
"help" => "Afficher (resp. ne pas afficher) la sortie en couleur par défaut",
|
"help" => "Afficher (resp. ne pas afficher) la sortie en couleur par défaut",
|
||||||
],
|
],
|
||||||
["--no-color", "action" => [null, "set_application_color", false]],
|
["--no-color", "action" => [console::class, "set_color", false]],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
static function set_application_verbosity(string $verbosity): void {
|
|
||||||
$console = console::get();
|
|
||||||
switch ($verbosity) {
|
|
||||||
case "Q":
|
|
||||||
case "silent":
|
|
||||||
$console->resetParams([
|
|
||||||
"min_level" => msg::NONE,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "q":
|
|
||||||
case "quiet":
|
|
||||||
$console->resetParams([
|
|
||||||
"min_level" => msg::MAJOR,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "n":
|
|
||||||
case "normal":
|
|
||||||
$console->resetParams([
|
|
||||||
"min_level" => msg::NORMAL,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "v":
|
|
||||||
case "verbose":
|
|
||||||
$console->resetParams([
|
|
||||||
"min_level" => msg::MINOR,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
case "D":
|
|
||||||
case "debug":
|
|
||||||
app::set_debug();
|
|
||||||
$console->resetParams([
|
|
||||||
"min_level" => msg::DEBUG,
|
|
||||||
]);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw ValueException::invalid_value($verbosity, "verbosity");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static function set_application_log_output(string $logfile): void {
|
|
||||||
log::create_or_reset_params([
|
|
||||||
"output" => $logfile,
|
|
||||||
], StdMessenger::class, [
|
|
||||||
"add_date" => true,
|
|
||||||
"min_level" => log::MINOR,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
static function set_application_color(bool $color): void {
|
|
||||||
console::reset_params([
|
|
||||||
"color" => $color,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
const ARGS = [
|
const ARGS = [
|
||||||
"sections" => [
|
"sections" => [
|
||||||
self::PROFILE_SECTION,
|
self::PROFILE_SECTION,
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace nulib\output;
|
namespace nulib\output;
|
||||||
|
|
||||||
|
use nulib\app\app;
|
||||||
use nulib\output\std\ProxyMessenger;
|
use nulib\output\std\ProxyMessenger;
|
||||||
|
use nulib\output\std\StdMessenger;
|
||||||
|
use nulib\ValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class console: afficher un message sur la console
|
* Class console: afficher un message sur la console
|
||||||
@ -25,4 +28,49 @@ class console extends _messenger {
|
|||||||
static function get(): IMessenger {
|
static function get(): IMessenger {
|
||||||
return self::$msg ??= new ProxyMessenger();
|
return self::$msg ??= new ProxyMessenger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function set_verbosity(string $verbosity): void {
|
||||||
|
$console = self::get();
|
||||||
|
switch ($verbosity) {
|
||||||
|
case "Q":
|
||||||
|
case "silent":
|
||||||
|
$console->resetParams([
|
||||||
|
"min_level" => msg::NONE,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "q":
|
||||||
|
case "quiet":
|
||||||
|
$console->resetParams([
|
||||||
|
"min_level" => msg::MAJOR,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "n":
|
||||||
|
case "normal":
|
||||||
|
$console->resetParams([
|
||||||
|
"min_level" => msg::NORMAL,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "v":
|
||||||
|
case "verbose":
|
||||||
|
$console->resetParams([
|
||||||
|
"min_level" => msg::MINOR,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
case "D":
|
||||||
|
case "debug":
|
||||||
|
app::set_debug();
|
||||||
|
$console->resetParams([
|
||||||
|
"min_level" => msg::DEBUG,
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw ValueException::invalid_value($verbosity, "verbosity");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static function set_color(bool $color=true): void {
|
||||||
|
console::reset_params([
|
||||||
|
"color" => $color,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
namespace nulib\output;
|
namespace nulib\output;
|
||||||
|
|
||||||
use nulib\output\std\ProxyMessenger;
|
use nulib\output\std\ProxyMessenger;
|
||||||
|
use nulib\output\std\StdMessenger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class log: inscrire un message dans les logs uniquement
|
* Class log: inscrire un message dans les logs uniquement
|
||||||
@ -25,4 +26,13 @@ class log extends _messenger {
|
|||||||
static function get(): IMessenger {
|
static function get(): IMessenger {
|
||||||
return self::$msg ??= new ProxyMessenger();
|
return self::$msg ??= new ProxyMessenger();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function set_output(string $logfile): void {
|
||||||
|
self::create_or_reset_params([
|
||||||
|
"output" => $logfile,
|
||||||
|
], StdMessenger::class, [
|
||||||
|
"add_date" => true,
|
||||||
|
"min_level" => self::MINOR,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,25 +2,28 @@
|
|||||||
<?php
|
<?php
|
||||||
require __DIR__.'/../vendor/autoload.php';
|
require __DIR__.'/../vendor/autoload.php';
|
||||||
|
|
||||||
use lib\mail\mailer;
|
use nulib\app\cli\Application;
|
||||||
use nur\cli\Application;
|
use nulib\mail\mailer;
|
||||||
|
use nulib\ValueException;
|
||||||
|
|
||||||
Application::run(new class extends Application {
|
Application::run(new class extends Application {
|
||||||
const ARGS = [
|
const ARGS = [
|
||||||
|
"usage" => "SUBJECT BODY -t RECIPIENT",
|
||||||
"merge" => parent::ARGS,
|
"merge" => parent::ARGS,
|
||||||
["-t", "--to", "args" => 1, "action" => "--add", "name" => "to"],
|
["-F", "--from", "args" => 1, "name" => "from", "argsdesc" => "MAILFROM"],
|
||||||
["-c", "--cc", "args" => 1, "action" => "--add", "name" => "cc"],
|
["-t", "--to", "args" => 1, "action" => "--add", "name" => "to", "argsdesc" => "RECIPIENT"],
|
||||||
["-b", "--bcc", "args" => 1, "action" => "--add", "name" => "bcc"],
|
["-c", "--cc", "args" => 1, "action" => "--add", "name" => "cc", "argsdesc" => "RECIPIENT"],
|
||||||
["-F", "--from", "args" => 1, "name" => "from"],
|
["-b", "--bcc", "args" => 1, "action" => "--add", "name" => "bcc", "argsdesc" => "RECIPIENT"],
|
||||||
["args" => 2, "name" => "args"],
|
["args" => 2, "name" => "args"],
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $to, $cc, $bcc, $from;
|
protected $to, $cc, $bcc, $from;
|
||||||
protected $args;
|
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
$subject = $this->args[0];
|
$subject = $this->args[0] ?? null;
|
||||||
$body = $this->args[1];
|
ValueException::check_null($subject, "subject");
|
||||||
|
$body = $this->args[1] ?? null;
|
||||||
|
ValueException::check_null($body, "body");
|
||||||
mailer::send($this->to, $subject, $body, $this->cc, $this->bcc, $this->from);
|
mailer::send($this->to, $subject, $body, $this->cc, $this->bcc, $this->from);
|
||||||
}
|
}
|
||||||
});
|
});
|
Loading…
x
Reference in New Issue
Block a user