modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-07-16 01:54:30 +04:00
parent 19daaa2893
commit 4dc4b97974
8 changed files with 61 additions and 43 deletions

View File

@ -1,7 +1,7 @@
<?php
namespace nur;
use nur\b\ExitException;
use nur\b\ExitError;
use nur\b\ui\AbstractMessenger;
use nur\b\ui\IMessenger;
use nur\b\ValueException;
@ -122,5 +122,5 @@ class _messenger {
return self::get()->addMessage([self::USER => $message], self::_info(), self::_normal());
}
static final function die($message): void { throw new ExitException(1, $message); }
static final function die($message): void { throw new ExitError(1, $message); }
}

31
nur_src/b/ExitError.php Normal file
View File

@ -0,0 +1,31 @@
<?php
namespace nur\b;
use Error;
use Throwable;
/**
* Class ExitException: une exception qui indique que l'application souhaite
* quitter normalement, avec éventuellement un code d'erreur.
*/
class ExitError extends Error {
function __construct(int $exitcode=0, $userMessage=null, Throwable $previous=null) {
parent::__construct(null, $exitcode, $previous);
$this->userMessage = $userMessage;
}
function isError(): bool {
return $this->getCode() !== 0;
}
/** @var ?string */
protected $userMessage;
function haveMessage(): bool {
return $this->userMessage !== null;
}
function getUserMessage(): ?string {
return $this->userMessage;
}
}

View File

@ -1,22 +0,0 @@
<?php
namespace nur\b;
use Throwable;
/**
* Class ExitException: une exception qui indique que l'application souhaite
* quitter normalement, avec éventuellement un code d'erreur.
*/
class ExitException extends UserException {
function __construct(int $exitcode=0, $message=null, Throwable $previous=null) {
parent::__construct($message, $exitcode, $previous);
}
function isError(): bool {
return $this->getCode() !== 0;
}
function haveMessage(): bool {
return $this->getUserMessage() || $this->getTechMessage();
}
}

View File

@ -2,7 +2,7 @@
namespace nur\cli;
use Exception;
use nur\b\ExitException;
use nur\b\ExitError;
use nur\b\ValueException;
use nur\config;
use nur\config\ArrayConfig;
@ -183,7 +183,7 @@ abstract class Application {
if ($app === null) $app = new static();
static::_app_configure($app);
static::_app_main($app);
} catch (ExitException $e) {
} catch (ExitError $e) {
if ($e->haveMessage()) msg::error($e);
exit($e->getCode());
} catch (Exception $e) {
@ -196,20 +196,20 @@ abstract class Application {
* sortir de l'application avec un code d'erreur, qui est 0 par défaut (i.e
* pas d'erreur)
*
* équivalent à lancer l'exception {@link ExitException}
* équivalent à lancer l'exception {@link ExitError}
*/
protected static final function exit(int $exitcode=0, $message=null) {
throw new ExitException($exitcode, $message);
throw new ExitError($exitcode, $message);
}
/**
* sortir de l'application avec un code d'erreur, qui vaut 1 par défaut (i.e
* une erreur s'est produite)
*
* équivalent à lancer l'exception {@link ExitException}
* équivalent à lancer l'exception {@link ExitError}
*/
protected static final function die($message=null, int $exitcode=1) {
throw new ExitException($exitcode, $message);
throw new ExitError($exitcode, $message);
}
const PROFILE_SECTION = [

View File

@ -2,7 +2,7 @@
namespace nur\cli;
use nur\A;
use nur\b\ExitException;
use nur\b\ExitError;
use nur\b\io\IWriter;
use nur\b\params\Tparametrable;
use nur\b\ui\AbstractMessenger;
@ -75,7 +75,7 @@ class Console extends AbstractMessenger {
protected function processMsgOptions(array $options): void {
$exit = $options[self::KEY_EXIT];
if ($exit !== null && $exit !== false) {
throw new ExitException(
throw new ExitError(
is_int($exit)? $exit: 1,
is_string($exit)? $exit: null,
);

View File

@ -4,7 +4,7 @@ namespace nur\v\base;
use nur\A;
use nur\b\coll\BaseArray;
use nur\b\coll\GenericArray;
use nur\b\ExitException;
use nur\b\ExitError;
use nur\co;
use nur\config;
use nur\func;
@ -274,7 +274,7 @@ abstract class AbstractPageContainer implements IPageContainer {
$this->overridePrint($page);
} catch (Throwable $e) {
if ($e instanceof ExitException && !$e->isError()) {
if ($e instanceof ExitError && !$e->isError()) {
# NOP
} else {
$this->setError(null, $e);

View File

@ -1,22 +1,31 @@
<?php
namespace nur\sery;
use Error;
use Throwable;
/**
* Class ExitException: une exception qui indique que l'application souhaite
* quitter normalement, avec éventuellement un code d'erreur.
*/
class ExitException extends UserException {
class ExitError extends Error {
function __construct(int $exitcode=0, $userMessage=null, Throwable $previous=null) {
parent::__construct($userMessage, null, $exitcode, $previous);
parent::__construct(null, $exitcode, $previous);
$this->userMessage = $userMessage;
}
function isError(): bool {
return $this->getCode() !== 0;
}
/** @var ?string */
protected $userMessage;
function haveMessage(): bool {
return $this->getUserMessage() !== null;
return $this->userMessage !== null;
}
function getUserMessage(): ?string {
return $this->userMessage;
}
}

View File

@ -2,7 +2,7 @@
namespace nur\sery\wip\cli;
use Exception;
use nur\sery\ExitException;
use nur\sery\ExitError;
use nur\sery\output\msg;
use nur\sery\output\std\StdMessenger;
@ -31,7 +31,7 @@ abstract class Application {
if ($app === null) $app = new static();
static::_app_configure($app);
static::_app_main($app);
} catch (ExitException $e) {
} catch (ExitError $e) {
msg::error($e->getUserMessage());
exit($e->getCode());
} catch (Exception $e) {
@ -44,20 +44,20 @@ abstract class Application {
* sortir de l'application avec un code d'erreur, qui est 0 par défaut (i.e
* pas d'erreur)
*
* équivalent à lancer l'exception {@link ExitException}
* équivalent à lancer l'exception {@link ExitError}
*/
protected static final function exit(int $exitcode=0, $message=null) {
throw new ExitException($exitcode, $message);
throw new ExitError($exitcode, $message);
}
/**
* sortir de l'application avec un code d'erreur, qui vaut 1 par défaut (i.e
* une erreur s'est produite)
*
* équivalent à lancer l'exception {@link ExitException}
* équivalent à lancer l'exception {@link ExitError}
*/
protected static final function die($message=null, int $exitcode=1) {
throw new ExitException($exitcode, $message);
throw new ExitError($exitcode, $message);
}
const ARGS = [];