modifs.mineures sans commentaires
This commit is contained in:
		
							parent
							
								
									efb7901498
								
							
						
					
					
						commit
						58af45cc99
					
				| @ -28,7 +28,7 @@ class app { | ||||
|         "class" => $class, | ||||
|         "projdir" => $app::PROJDIR, | ||||
|         "vendor" => $app::VENDOR, | ||||
|         "appcode" => $app::APPCODE, | ||||
|         "projcode" => $app::PROJCODE, | ||||
|         "datadir" => $app::DATADIR, | ||||
|         "etcdir" => $app::ETCDIR, | ||||
|         "vardir" => $app::VARDIR, | ||||
| @ -43,7 +43,7 @@ class app { | ||||
|         "class" => $class, | ||||
|         "projdir" => constant("$app::PROJDIR"), | ||||
|         "vendor" => constant("$app::VENDOR"), | ||||
|         "appcode" => constant("$app::APPCODE"), | ||||
|         "projcode" => constant("$app::PROJCODE"), | ||||
|         "datadir" => constant("$app::DATADIR"), | ||||
|         "etcdir" => constant("$app::ETCDIR"), | ||||
|         "vardir" => constant("$app::VARDIR"), | ||||
| @ -75,7 +75,7 @@ class app { | ||||
|       A::merge($params, cl::select($proj_params, [ | ||||
|         "projdir", | ||||
|         "vendor", | ||||
|         "appcode", | ||||
|         "projcode", | ||||
|         "cwd", | ||||
|         "datadir", | ||||
|         "etcdir", | ||||
| @ -156,7 +156,7 @@ class app { | ||||
|       [ | ||||
|         "projdir" => $projdir, | ||||
|         "vendor" => $vendor, | ||||
|         "appcode" => $appcode, | ||||
|         "projcode" => $projcode, | ||||
|         "datadir" => $datadir, | ||||
|         "etcdir" => $etcdir, | ||||
|         "vardir" => $vardir, | ||||
| @ -187,32 +187,32 @@ class app { | ||||
|       $vendor = $params["vendor"] ?? self::DEFAULT_VENDOR; | ||||
|       $vendor["bindir"] = path::reljoin($projdir, $vendor["bindir"]); | ||||
|       $vendor["autoload"] = path::reljoin($projdir, $vendor["autoload"]); | ||||
|       # appcode
 | ||||
|       $appcode = $params["appcode"] ?? null; | ||||
|       if ($appcode === null) { | ||||
|         $appcode = str::without_suffix("-app", path::basename($projdir)); | ||||
|       # projcode
 | ||||
|       $projcode = $params["projcode"] ?? null; | ||||
|       if ($projcode === null) { | ||||
|         $projcode = str::without_suffix("-app", path::basename($projdir)); | ||||
|       } | ||||
|       $APPCODE = str_replace("-", "_", strtoupper($appcode)); | ||||
|       $PROJCODE = str_replace("-", "_", strtoupper($projcode)); | ||||
|       # cwd
 | ||||
|       $cwd = $params["cwd"] ?? null; | ||||
|       # datadir
 | ||||
|       $datadir = getenv("${APPCODE}_DATADIR"); | ||||
|       $datadir = getenv("${PROJCODE}_DATADIR"); | ||||
|       $datadirIsDefined = $datadir !== false; | ||||
|       if ($datadir === false) $datadir = $params["datadir"] ?? null; | ||||
|       if ($datadir === null) $datadir = "devel"; | ||||
|       $datadir = path::reljoin($projdir, $datadir); | ||||
|       # etcdir
 | ||||
|       $etcdir = getenv("${APPCODE}_ETCDIR"); | ||||
|       $etcdir = getenv("${PROJCODE}_ETCDIR"); | ||||
|       if ($etcdir === false) $etcdir = $params["etcdir"] ?? null; | ||||
|       if ($etcdir === null) $etcdir = "etc"; | ||||
|       $etcdir = path::reljoin($datadir, $etcdir); | ||||
|       # vardir
 | ||||
|       $vardir = getenv("${APPCODE}_VARDIR"); | ||||
|       $vardir = getenv("${PROJCODE}_VARDIR"); | ||||
|       if ($vardir === false) $vardir = $params["vardir"] ?? null; | ||||
|       if ($vardir === null) $vardir = "var"; | ||||
|       $vardir = path::reljoin($datadir, $vardir); | ||||
|       # logdir
 | ||||
|       $logdir = getenv("${APPCODE}_LOGDIR"); | ||||
|       $logdir = getenv("${PROJCODE}_LOGDIR"); | ||||
|       if ($logdir === false) $logdir = $params["logdir"] ?? null; | ||||
|       if ($logdir === null) $logdir = "log"; | ||||
|       $logdir = path::reljoin($datadir, $logdir); | ||||
| @ -222,7 +222,7 @@ class app { | ||||
|     # profile
 | ||||
|     $this->profileManager = new ProfileManager([ | ||||
|       "app" => true, | ||||
|       "name" => $appcode, | ||||
|       "name" => $projcode, | ||||
|       "default_profile" => $datadirIsDefined? "prod": "devel", | ||||
|       "profile" => $params["profile"] ?? null, | ||||
|     ]); | ||||
| @ -233,7 +233,7 @@ class app { | ||||
| 
 | ||||
|     $this->projdir = $projdir; | ||||
|     $this->vendor = $vendor; | ||||
|     $this->appcode = $appcode; | ||||
|     $this->projcode = $projcode; | ||||
|     $this->cwd = $cwd; | ||||
|     $this->datadir = $datadir; | ||||
|     $this->etcdir = $etcdir; | ||||
| @ -244,13 +244,14 @@ class app { | ||||
|     $appgroup = $params["appgroup"] ?? null; | ||||
|     $name = $params["name"] ?? $params["class"] ?? null; | ||||
|     if ($name === null) { | ||||
|       $name = $appcode; | ||||
|       $name = $projcode; | ||||
|     } else { | ||||
|       # 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 = str::camel2us($name, false, "-"); | ||||
|       $name = str::without_suffix("-app", $name); | ||||
|       $name .= ".php"; | ||||
|     } | ||||
|     $this->appgroup = $appgroup; | ||||
|     $this->name = $name; | ||||
| @ -277,10 +278,10 @@ class app { | ||||
|     return $this->vendor["autoload"]; | ||||
|   } | ||||
| 
 | ||||
|   protected string $appcode; | ||||
|   protected string $projcode; | ||||
| 
 | ||||
|   function getAppcode(): string { | ||||
|     return $this->appcode; | ||||
|   function getProjcode(): string { | ||||
|     return $this->projcode; | ||||
|   } | ||||
| 
 | ||||
|   protected string $cwd; | ||||
| @ -432,7 +433,7 @@ class app { | ||||
|     return [ | ||||
|       "projdir" => $this->projdir, | ||||
|       "vendor" => $this->vendor, | ||||
|       "appcode" => $this->appcode, | ||||
|       "projcode" => $this->projcode, | ||||
|       "cwd" => $this->cwd, | ||||
|       "datadir" => $this->datadir, | ||||
|       "etcdir" => $this->etcdir, | ||||
|  | ||||
| @ -14,7 +14,6 @@ use nulib\output\console; | ||||
| use nulib\output\log; | ||||
| use nulib\output\msg; | ||||
| use nulib\output\std\StdMessenger; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * 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 | ||||
|    * paramètres extraits de l'environnement, e.g XXX_YYY_DATADIR si le projet a | ||||
|    * pour code xxx-yyy | ||||
|    * paramètres extraits de l'environnement, e.g MY_APP_DATADIR si le projet a | ||||
|    * pour code my-app | ||||
|    * | ||||
|    * si non définie, cette valeur est calculée automatiquement à partir de | ||||
|    * self::PROJDIR sans le suffixe "-app" | ||||
|    */ | ||||
|   const APPCODE = null; | ||||
|   const PROJCODE = null; | ||||
| 
 | ||||
|   /** | ||||
|    * @var string|null identifiant d'un groupe auquel l'application appartient. | ||||
| @ -245,7 +244,7 @@ EOT); | ||||
|   } | ||||
| 
 | ||||
|   const PROFILE_SECTION = [ | ||||
|     "title" => "PROFILS D'EXECUTION", | ||||
|     "title" => "PROFIL D'EXECUTION", | ||||
|     "show" => false, | ||||
|     ["group", | ||||
|       ["-p", "--profile", "--app-profile", | ||||
| @ -265,79 +264,27 @@ EOT); | ||||
|     ["group", | ||||
|       ["--verbosity", | ||||
|         "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é", | ||||
|       ], | ||||
|       ["-q", "--quiet", "action" => [null, "set_application_verbosity", "quiet"]], | ||||
|       ["-v", "--verbose", "action" => [null, "set_application_verbosity", "verbose"]], | ||||
|       ["-D", "--debug", "action" => [null, "set_application_verbosity", "debug"]], | ||||
|       ["-q", "--quiet", "action" => [console::class, "set_verbosity", "quiet"]], | ||||
|       ["-v", "--verbose", "action" => [console::class, "set_verbosity", "verbose"]], | ||||
|       ["-D", "--debug", "action" => [console::class, "set_verbosity", "debug"]], | ||||
|     ], | ||||
|     ["-L", "--logfile", | ||||
|       "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é", | ||||
|     ], | ||||
|     ["group", | ||||
|       ["--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", | ||||
|       ], | ||||
|       ["--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 = [ | ||||
|     "sections" => [ | ||||
|       self::PROFILE_SECTION, | ||||
|  | ||||
| @ -1,7 +1,10 @@ | ||||
| <?php | ||||
| namespace nulib\output; | ||||
| 
 | ||||
| use nulib\app\app; | ||||
| use nulib\output\std\ProxyMessenger; | ||||
| use nulib\output\std\StdMessenger; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| /** | ||||
|  * Class console: afficher un message sur la console | ||||
| @ -25,4 +28,49 @@ class console extends _messenger { | ||||
|   static function get(): IMessenger { | ||||
|     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; | ||||
| 
 | ||||
| use nulib\output\std\ProxyMessenger; | ||||
| use nulib\output\std\StdMessenger; | ||||
| 
 | ||||
| /** | ||||
|  * Class log: inscrire un message dans les logs uniquement | ||||
| @ -25,4 +26,13 @@ class log extends _messenger { | ||||
|   static function get(): IMessenger { | ||||
|     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 | ||||
| require __DIR__.'/../vendor/autoload.php'; | ||||
| 
 | ||||
| use lib\mail\mailer; | ||||
| use nur\cli\Application; | ||||
| use nulib\app\cli\Application; | ||||
| use nulib\mail\mailer; | ||||
| use nulib\ValueException; | ||||
| 
 | ||||
| Application::run(new class extends Application { | ||||
|   const ARGS = [ | ||||
|     "usage" => "SUBJECT BODY -t RECIPIENT", | ||||
|     "merge" => parent::ARGS, | ||||
|     ["-t", "--to", "args" => 1, "action" => "--add", "name" => "to"], | ||||
|     ["-c", "--cc", "args" => 1, "action" => "--add", "name" => "cc"], | ||||
|     ["-b", "--bcc", "args" => 1, "action" => "--add", "name" => "bcc"], | ||||
|     ["-F", "--from", "args" => 1, "name" => "from"], | ||||
|     ["-F", "--from", "args" => 1, "name" => "from", "argsdesc" => "MAILFROM"], | ||||
|     ["-t", "--to", "args" => 1, "action" => "--add", "name" => "to", "argsdesc" => "RECIPIENT"], | ||||
|     ["-c", "--cc", "args" => 1, "action" => "--add", "name" => "cc", "argsdesc" => "RECIPIENT"], | ||||
|     ["-b", "--bcc", "args" => 1, "action" => "--add", "name" => "bcc", "argsdesc" => "RECIPIENT"], | ||||
|     ["args" => 2, "name" => "args"], | ||||
|   ]; | ||||
| 
 | ||||
|   protected $to, $cc, $bcc, $from; | ||||
|   protected $args; | ||||
| 
 | ||||
|   function main() { | ||||
|     $subject = $this->args[0]; | ||||
|     $body = $this->args[1]; | ||||
|     $subject = $this->args[0] ?? null; | ||||
|     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); | ||||
|   } | ||||
| }); | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user