modifs.mineures sans commentaires
This commit is contained in:
parent
ef5a0ee730
commit
c37816e56d
@ -10,13 +10,13 @@ class MysqlCapacitorApp extends AbstractCapacitorApp {
|
||||
"merge" => parent::ARGS,
|
||||
"purpose" => "gestion d'un capacitor mysql",
|
||||
"usage" => [
|
||||
"DBCONN [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] [--query] key=value...",
|
||||
"DBCONN [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] --sql-create",
|
||||
"DBCONN [channelName | -t table | -c ChannelClass] [--query] key=value...",
|
||||
"DBCONN [channelName | -t table | -c ChannelClass] --sql-create",
|
||||
],
|
||||
["-t", "--table-name", "args" => 1,
|
||||
["-t:table", "--table-name",
|
||||
"help" => "nom de la table porteuse du canal de données",
|
||||
],
|
||||
["-c", "--channel-class", "args" => 1,
|
||||
["-c:class", "--channel-class",
|
||||
"help" => "nom de la classe dérivée de CapacitorChannel",
|
||||
],
|
||||
["-z", "--reset", "name" => "action", "value" => self::ACTION_RESET,
|
||||
|
@ -10,13 +10,13 @@ class PgsqlCapacitorApp extends AbstractCapacitorApp {
|
||||
"merge" => parent::ARGS,
|
||||
"purpose" => "gestion d'un capacitor pgsql",
|
||||
"usage" => [
|
||||
"DBCONN [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] [--query] key=value...",
|
||||
"DBCONN [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] --sql-create",
|
||||
"DBCONN [channelName | -t table | -c ChannelClass] [--query] key=value...",
|
||||
"DBCONN [channelName | -t table | -c ChannelClass] --sql-create",
|
||||
],
|
||||
["-t", "--table-name", "args" => 1,
|
||||
["-t:table", "--table-name",
|
||||
"help" => "nom de la table porteuse du canal de données",
|
||||
],
|
||||
["-c", "--channel-class", "args" => 1,
|
||||
["-c:class", "--channel-class",
|
||||
"help" => "nom de la classe dérivée de CapacitorChannel",
|
||||
],
|
||||
["-z", "--reset", "name" => "action", "value" => self::ACTION_RESET,
|
||||
|
@ -9,13 +9,13 @@ class SqliteCapacitorApp extends AbstractCapacitorApp {
|
||||
"merge" => parent::ARGS,
|
||||
"purpose" => "gestion d'un capacitor sqlite",
|
||||
"usage" => [
|
||||
"DBFILE [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] [--query] key=value...",
|
||||
"DBFILE [CHANNEL_NAME | -t TABLE | -c CHANNEL_CLASS] --sql-create",
|
||||
"DBFILE [channelName | -t table | -c ChannelClass] [--query] key=value...",
|
||||
"DBFILE [channelName | -t table | -c ChannelClass] --sql-create",
|
||||
],
|
||||
["-t", "--table-name", "args" => 1,
|
||||
["-t:table", "--table-name",
|
||||
"help" => "nom de la table porteuse du canal de données",
|
||||
],
|
||||
["-c", "--channel-class", "args" => 1,
|
||||
["-c:class", "--channel-class",
|
||||
"help" => "nom de la classe dérivée de CapacitorChannel",
|
||||
],
|
||||
["-z", "--reset", "name" => "action", "value" => self::ACTION_RESET,
|
||||
|
@ -20,7 +20,7 @@ class _SteamTrainApp extends Application {
|
||||
Cette application peut être utilisée pour tester le lancement des tâches de fond
|
||||
EOT,
|
||||
|
||||
["-c", "--count", "args" => 1,
|
||||
["-c:count", "--count",
|
||||
"help" => "spécifier le nombre d'étapes",
|
||||
],
|
||||
["-f", "--force-enabled", "value" => true,
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
MYDIR="$(dirname -- "$0")"
|
||||
VENDOR="$MYDIR/../vendor"
|
||||
VENDOR="$MYDIR/vendor"
|
||||
"$VENDOR/bin/phpunit" --bootstrap "$VENDOR/autoload.php" "$@" "$MYDIR/tests"
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
namespace nulib;
|
||||
|
||||
use nulib\php\func;
|
||||
use Traversable;
|
||||
|
||||
/**
|
||||
|
@ -3,7 +3,6 @@ namespace nulib\app;
|
||||
|
||||
use nulib\A;
|
||||
use nulib\cl;
|
||||
use nulib\app\app;
|
||||
use nulib\file\SharedFile;
|
||||
use nulib\os\path;
|
||||
use nulib\os\sh;
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\app\args\ArgsException;
|
||||
use stdClass;
|
||||
|
||||
abstract class AbstractArgsParser {
|
||||
|
@ -2,9 +2,6 @@
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\A;
|
||||
use nulib\app\args\AbstractArgsParser;
|
||||
use nulib\app\args\Aolist;
|
||||
use nulib\app\args\ArgsException;
|
||||
use nulib\cl;
|
||||
use nulib\php\akey;
|
||||
use nulib\php\func;
|
||||
@ -84,27 +81,42 @@ class Aodef {
|
||||
if ($merge !== null) $this->mergeParse($merge);
|
||||
}
|
||||
|
||||
private static function verifix_args(?array &$options): ?array {
|
||||
$args = null;
|
||||
if ($options !== null) {
|
||||
foreach ($options as &$option) {
|
||||
if (preg_match('/^(.*:)([^:].*)$/', $option, $ms)) {
|
||||
$option = $ms[1];
|
||||
$args ??= explode(",", $ms[2]);
|
||||
}
|
||||
}; unset($option);
|
||||
}
|
||||
return $args;
|
||||
}
|
||||
|
||||
protected function parse(array $def): void {
|
||||
[$options, $params] = cl::split_assoc($def);
|
||||
|
||||
$this->show ??= $params["show"] ?? true;
|
||||
$this->extends ??= $params["extends"] ?? null;
|
||||
|
||||
$this->disabled = vbool::withn($params["disabled"] ?? null);
|
||||
$removes = varray::withn($params["remove"] ?? null);
|
||||
A::merge($this->_removes, $removes);
|
||||
$adds = varray::withn($params["add"] ?? null);
|
||||
A::merge($this->_adds, $adds);
|
||||
A::merge($this->_adds, $options);
|
||||
|
||||
$args = $params["args"] ?? null;
|
||||
$args ??= $params["args"] ?? null;
|
||||
$args ??= $params["arg"] ?? null;
|
||||
if ($args === true) $args = 1;
|
||||
elseif ($args === "*") $args = [null];
|
||||
elseif ($args === "+") $args = ["value", null];
|
||||
if (is_int($args)) $args = array_fill(0, $args, "value");
|
||||
$this->_args ??= cl::withn($args);
|
||||
|
||||
$this->disabled = vbool::withn($params["disabled"] ?? null);
|
||||
$adds = varray::withn($params["add"] ?? null);
|
||||
A::merge($this->_adds, $adds);
|
||||
A::merge($this->_adds, $options);
|
||||
$args ??= self::verifix_args($this->_adds);
|
||||
$removes = varray::withn($params["remove"] ?? null);
|
||||
A::merge($this->_removes, $removes);
|
||||
self::verifix_args($this->_adds);
|
||||
|
||||
$this->_args ??= cl::withn($args);
|
||||
$this->argsdesc ??= $params["argsdesc"] ?? null;
|
||||
|
||||
$this->ensureArray ??= $params["ensure_array"] ?? null;
|
||||
@ -286,11 +298,11 @@ class Aodef {
|
||||
*/
|
||||
protected function processArgs(): void {
|
||||
$args = $this->_args;
|
||||
$haveArgs = boolval($args);
|
||||
if ($this->isRemains) {
|
||||
$haveArgs = true;
|
||||
$args = [null];
|
||||
$args ??= [null];
|
||||
$haveArgs = boolval($args);
|
||||
} elseif ($args === null) {
|
||||
$haveArgs = false;
|
||||
$optionalArgs = null;
|
||||
foreach ($this->_options as $option) {
|
||||
switch ($option["args_type"]) {
|
||||
@ -311,6 +323,8 @@ class Aodef {
|
||||
$args = ["value"];
|
||||
if ($optionalArgs) $args = [$args];
|
||||
}
|
||||
} else {
|
||||
$haveArgs = boolval($args);
|
||||
}
|
||||
|
||||
if ($this->isRemains) $desc = "remaining args";
|
||||
@ -450,12 +464,12 @@ class Aodef {
|
||||
}
|
||||
|
||||
function isEmpty(): bool {
|
||||
return $this->disabled || !$this->_options;
|
||||
return $this->disabled || (!$this->_options && !$this->isRemains);
|
||||
}
|
||||
|
||||
function printHelp(?array $what=null): void {
|
||||
$showDef = $what["show"] ?? $this->show;
|
||||
if (!$showDef) return;
|
||||
if (!$showDef || $this->isRemains) return;
|
||||
|
||||
$prefix = $what["prefix"] ?? null;
|
||||
if ($prefix !== null) echo $prefix;
|
||||
|
@ -2,8 +2,6 @@
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\A;
|
||||
use nulib\app\args\Aolist;
|
||||
use nulib\app\args\ArgsException;
|
||||
|
||||
/**
|
||||
* Class Aogroup: groupe d'arguments fonctionnant ensemble
|
||||
|
@ -1,9 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\app\args\Aodef;
|
||||
use nulib\app\args\Aogroup;
|
||||
use nulib\app\args\Aosection;
|
||||
use nulib\cl;
|
||||
use nulib\str;
|
||||
use const true;
|
||||
|
@ -1,8 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\app\args\Aodef;
|
||||
use nulib\app\args\Aolist;
|
||||
use nulib\php\types\vbool;
|
||||
|
||||
/**
|
||||
|
@ -1,8 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\app\args\Aodef;
|
||||
use nulib\app\args\Aolist;
|
||||
use nulib\cl;
|
||||
use nulib\php\types\vbool;
|
||||
use nulib\str;
|
||||
@ -122,8 +120,8 @@ class SimpleAolist extends Aolist {
|
||||
"help" => "Afficher l'aide",
|
||||
]);
|
||||
$helpArgdef->setup1();
|
||||
$this->aospecials[] = $helpArgdef;
|
||||
}
|
||||
if ($helpArgdef !== null) $this->aospecials[] = $helpArgdef;
|
||||
|
||||
$this->autoremains ??= true;
|
||||
if ($remainsArgdef === null && $this->autoremains) {
|
||||
@ -135,11 +133,9 @@ class SimpleAolist extends Aolist {
|
||||
"key" => $this->argskey,
|
||||
]);
|
||||
$remainsArgdef->setup1();
|
||||
}
|
||||
if ($remainsArgdef !== null) {
|
||||
$this->remainsArgdef = $remainsArgdef;
|
||||
$this->aospecials[] = $remainsArgdef;
|
||||
}
|
||||
$this->remainsArgdef = $remainsArgdef;
|
||||
|
||||
# puis calculer nombre d'arguments et actions
|
||||
$this->indexAodefs();
|
||||
|
@ -1,9 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\app\args;
|
||||
|
||||
use nulib\app\args\AbstractArgsParser;
|
||||
use nulib\app\args\Aodef;
|
||||
use nulib\app\args\SimpleAolist;
|
||||
use nulib\cl;
|
||||
use nulib\ExitError;
|
||||
use nulib\StateException;
|
||||
|
@ -1,7 +1,5 @@
|
||||
# nulib\app\args
|
||||
|
||||
* [ ] supporter "-o:args"
|
||||
* [ ] vérifier que remainArgs honore les bornes, notamment si spécifié par l'utilisateur
|
||||
* [ ] dans la section "profils", rajouter une option pour spécifier un fichier de configuration
|
||||
* [ ] transformer un schéma en définition d'arguments, un tableau en liste d'arguments, et vice-versa
|
||||
* [ ] faire une implémentation ArgsParser qui supporte les commandes, et les options dynamiques
|
||||
|
@ -4,9 +4,7 @@ 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;
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,6 @@
|
||||
<?php
|
||||
namespace nulib\db;
|
||||
|
||||
use nulib\A;
|
||||
use nulib\cl;
|
||||
use nulib\php\func;
|
||||
use nulib\ValueException;
|
||||
|
@ -2,7 +2,6 @@
|
||||
namespace nulib\file\csv;
|
||||
|
||||
use nulib\file;
|
||||
use nulib\file\_IFile;
|
||||
use nulib\file\FileReader;
|
||||
use nulib\file\IReader;
|
||||
use nulib\file\tab\AbstractReader;
|
||||
|
@ -3,7 +3,6 @@ namespace nulib\output;
|
||||
|
||||
use nulib\app\app;
|
||||
use nulib\output\std\ProxyMessenger;
|
||||
use nulib\output\std\StdMessenger;
|
||||
use nulib\ValueException;
|
||||
|
||||
/**
|
||||
|
@ -3,7 +3,6 @@ namespace nulib\php\time;
|
||||
|
||||
use DateTimeInterface;
|
||||
use InvalidArgumentException;
|
||||
use nulib\ValueException;
|
||||
|
||||
/**
|
||||
* Class Delay: une durée jusqu'à un moment destination. le moment destination
|
||||
|
0
php/tbin/output-forever.log
Normal file
0
php/tbin/output-forever.log
Normal file
69
php/tbin/test-application.php
Executable file
69
php/tbin/test-application.php
Executable file
@ -0,0 +1,69 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
require __DIR__."/../vendor/autoload.php";
|
||||
|
||||
use nulib\app\app;
|
||||
use nulib\app\cli\Application;
|
||||
use nulib\output\msg;
|
||||
|
||||
Application::run(new class extends Application {
|
||||
const ARGS = [
|
||||
"purpose" => "tester la gestion des arguments",
|
||||
"usage" => "-A|-a|-b",
|
||||
|
||||
"merge" => parent::ARGS,
|
||||
["group",
|
||||
["-A:", "--seta", "args" => "int", "name" => "a",
|
||||
"help" => "spécifier a",
|
||||
],
|
||||
["--seta10", "name" => "a", "value" => 10],
|
||||
["--seta20", "name" => "a", "value" => 20],
|
||||
],
|
||||
["-a", "--inca", "name" => "a",
|
||||
"help" => "incrémenter a",
|
||||
],
|
||||
["-b", "--deca", "name" => "a", "inverse" => true,
|
||||
"help" => "décrémenter a",
|
||||
],
|
||||
["-D::", "--override",
|
||||
"help" => "++remplace celui de la section principale",
|
||||
],
|
||||
"sections" => [
|
||||
[
|
||||
"title" => "Section X",
|
||||
"show" => false,
|
||||
["group",
|
||||
["-X:", "--setx", "args" => "int", "name" => "x",
|
||||
"help" => "spécifier x",
|
||||
],
|
||||
["--setx10", "name" => "x", "value" => 10],
|
||||
["--setx20", "name" => "x", "value" => 20],
|
||||
],
|
||||
["-x", "--incx", "name" => "x"],
|
||||
["-y", "--decx", "name" => "x", "inverse" => true],
|
||||
],
|
||||
],
|
||||
["args" => [["value", "value"]], "name" => "args"],
|
||||
];
|
||||
|
||||
private ?int $a = null;
|
||||
private ?int $x = null;
|
||||
private ?string $override = null;
|
||||
|
||||
function main() {
|
||||
$profile = app::get_profile($productionMode);
|
||||
$profile = self::get_profile($profile);
|
||||
$productionMode = $productionMode? "production": "development";
|
||||
msg::info("profile=$profile ($productionMode)");
|
||||
$debug = app::is_debug()? "DEBUG": "non";
|
||||
msg::info("debug=$debug");
|
||||
|
||||
msg::info([
|
||||
"variables:",
|
||||
"\na=", var_export($this->a, true),
|
||||
"\nx=", var_export($this->x, true),
|
||||
"\noverride=", var_export($this->override, true),
|
||||
"\nargs=", var_export($this->args, true),
|
||||
]);
|
||||
}
|
||||
});
|
278
php/tbin/test-console.php
Executable file
278
php/tbin/test-console.php
Executable file
@ -0,0 +1,278 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
use nulib\output\std\StdMessenger;
|
||||
use nulib\UserException;
|
||||
|
||||
$params = [];
|
||||
$count = count($argv) - 1;
|
||||
for ($i = 1; $i <= $count; $i++) {
|
||||
switch ($argv[$i]) {
|
||||
case "-L": $i++; $params["output"] = $argv[$i]; break;
|
||||
case "-i": $i++; $params["id"] = $argv[$i]; break;
|
||||
case "-t": $params["add_date"] = true; break;
|
||||
case "-n": $params["color"] = false; break;
|
||||
case "+n": $params["color"] = true; break;
|
||||
case "-d": $params["debug"] = true; break;
|
||||
case "+d": $params["debug"] = false; break;
|
||||
case "-D": $params["default_level"] = "debug"; break;
|
||||
case "-m": $params["default_level"] = "minor"; break;
|
||||
case "-M": $params["default_level"] = "major"; break;
|
||||
case "--show-debug":
|
||||
case "--sd": $params["min_level"] = "debug"; break;
|
||||
case "--show-minor":
|
||||
case "--verbose":
|
||||
case "--sm": $params["min_level"] = "minor"; break;
|
||||
case "--show-normal":
|
||||
case "--sn": $params["min_level"] = "normal"; break;
|
||||
case "--show-major":
|
||||
case "--quiet":
|
||||
case "--sM": $params["min_level"] = "major"; break;
|
||||
case "--show-none":
|
||||
case "--silent":
|
||||
case "--sx": $params["min_level"] = "none"; break;
|
||||
}
|
||||
}
|
||||
$msg = new StdMessenger($params);
|
||||
|
||||
$msg->title("title0");
|
||||
$msg->title("title1");
|
||||
$msg->print("print under title1");
|
||||
$msg->end();
|
||||
$msg->print("print under title0");
|
||||
$msg->end();
|
||||
|
||||
$msg->desc("action avec step");
|
||||
$msg->action("action avec step");
|
||||
$msg->step("step");
|
||||
$msg->asuccess("action success");
|
||||
|
||||
$msg->action("action avec step");
|
||||
$msg->step("step");
|
||||
$msg->afailure("action failure");
|
||||
|
||||
$msg->action("action avec step");
|
||||
$msg->step("step");
|
||||
$msg->adone("action neutral");
|
||||
|
||||
$msg->desc("actions sans step");
|
||||
$msg->action("action sans step");
|
||||
$msg->asuccess("action success");
|
||||
|
||||
$msg->action("action sans step");
|
||||
$msg->afailure("action failure");
|
||||
|
||||
$msg->action("action sans step");
|
||||
$msg->adone("action neutral");
|
||||
|
||||
$msg->desc("actions imbriquées");
|
||||
$msg->action("action0");
|
||||
$msg->action("action1");
|
||||
$msg->action("action2");
|
||||
$msg->asuccess("action2 success");
|
||||
$msg->asuccess("action1 success");
|
||||
$msg->asuccess("action0 success");
|
||||
|
||||
$msg->desc("action avec step, sans messages");
|
||||
$msg->action("action avec step, sans messages, success");
|
||||
$msg->step("step");
|
||||
$msg->asuccess();
|
||||
|
||||
$msg->action("action avec step, sans messages, failure");
|
||||
$msg->step("step");
|
||||
$msg->afailure();
|
||||
|
||||
$msg->action("action avec step, sans messages, done");
|
||||
$msg->step("step");
|
||||
$msg->adone();
|
||||
|
||||
$msg->desc("action sans step, sans messages");
|
||||
$msg->action("action sans step, sans messages, success");
|
||||
$msg->asuccess();
|
||||
|
||||
$msg->action("action sans step, sans messages, failure");
|
||||
$msg->afailure();
|
||||
|
||||
$msg->action("action sans step, sans messages, done");
|
||||
$msg->adone();
|
||||
|
||||
$msg->desc("actions imbriquées, sans messages");
|
||||
$msg->action("action0");
|
||||
$msg->action("action1");
|
||||
$msg->action("action2");
|
||||
$msg->asuccess();
|
||||
$msg->asuccess();
|
||||
$msg->asuccess();
|
||||
|
||||
$msg->info("info");
|
||||
$msg->note("note");
|
||||
$msg->warning("warning");
|
||||
$msg->error("error");
|
||||
|
||||
$msg->section("section", function ($msg) {
|
||||
$msg->title("title", function ($msg) {
|
||||
$msg->desc("desc");
|
||||
$msg->print("print");
|
||||
|
||||
$msg->desc("action avec step");
|
||||
$msg->action("action avec step", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->asuccess("action success");
|
||||
});
|
||||
|
||||
$msg->action("action avec step", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->afailure("action failure");
|
||||
});
|
||||
|
||||
$msg->action("action avec step", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->adone("action done");
|
||||
});
|
||||
|
||||
$msg->desc("actions sans step");
|
||||
$msg->action("action sans step", function ($msg) {
|
||||
$msg->asuccess("action success");
|
||||
});
|
||||
|
||||
$msg->action("action sans step", function ($msg) {
|
||||
$msg->afailure("action failure");
|
||||
});
|
||||
|
||||
$msg->action("action sans step", function ($msg) {
|
||||
$msg->adone("action done");
|
||||
});
|
||||
|
||||
$msg->desc("actions imbriquées");
|
||||
$msg->action("action0", function ($msg) {
|
||||
$msg->action("action1", function ($msg) {
|
||||
$msg->action("action2", function ($msg) {
|
||||
$msg->asuccess("action2 success");
|
||||
});
|
||||
$msg->asuccess("action1 success");
|
||||
});
|
||||
$msg->asuccess("action0 success");
|
||||
});
|
||||
|
||||
$msg->desc("action avec step, sans messages");
|
||||
$msg->action("action avec step, sans messages, success", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->asuccess();
|
||||
});
|
||||
|
||||
$msg->action("action avec step, sans messages, failure", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->afailure();
|
||||
});
|
||||
|
||||
$msg->action("action avec step, sans messages, done", function ($msg) {
|
||||
$msg->step("step");
|
||||
$msg->adone();
|
||||
});
|
||||
|
||||
$msg->desc("action sans step, sans messages");
|
||||
$msg->action("action sans step, sans messages, success", function ($msg) {
|
||||
$msg->asuccess();
|
||||
});
|
||||
|
||||
$msg->action("action sans step, sans messages, failure", function ($msg) {
|
||||
$msg->afailure();
|
||||
});
|
||||
|
||||
$msg->action("action sans step, sans messages, done", function ($msg) {
|
||||
$msg->adone();
|
||||
});
|
||||
|
||||
$msg->desc("actions imbriquées, sans messages");
|
||||
$msg->action("action0", function ($msg) {
|
||||
$msg->action("action1", function ($msg) {
|
||||
$msg->action("action2", function ($msg) {
|
||||
$msg->asuccess();
|
||||
});
|
||||
$msg->asuccess();
|
||||
});
|
||||
$msg->asuccess();
|
||||
});
|
||||
|
||||
$msg->desc("action avec step, avec code de retour");
|
||||
$msg->action("action avec step, avec code de retour true", function ($msg) {
|
||||
$msg->step("step");
|
||||
return true;
|
||||
});
|
||||
|
||||
$msg->action("action avec step, avec code de retour false", function ($msg) {
|
||||
$msg->step("step");
|
||||
return false;
|
||||
});
|
||||
|
||||
$msg->action("action avec step, avec code de retour autre", function ($msg) {
|
||||
$msg->step("step");
|
||||
return "autre";
|
||||
});
|
||||
|
||||
$msg->action("action avec step, avec code de retour null", function ($msg) {
|
||||
$msg->step("step");
|
||||
});
|
||||
|
||||
$msg->desc("action sans step, avec code de retour");
|
||||
$msg->action("action sans step, avec code de retour true", function ($msg) {
|
||||
return true;
|
||||
});
|
||||
|
||||
$msg->action("action sans step, avec code de retour false", function ($msg) {
|
||||
return false;
|
||||
});
|
||||
|
||||
$msg->action("action sans step, avec code de retour autre", function ($msg) {
|
||||
return "autre";
|
||||
});
|
||||
|
||||
# ici, il n'y aura pas de message du tout
|
||||
$msg->action("action sans step, avec code de retour null", function ($msg) {
|
||||
});
|
||||
|
||||
$msg->info("info");
|
||||
$msg->note("note");
|
||||
$msg->warning("warning");
|
||||
$msg->error("error");
|
||||
});
|
||||
});
|
||||
|
||||
$msg->section("multi-line\nsection", function ($msg) {
|
||||
$msg->title("multi-line\ntitle");
|
||||
$msg->title("another\ntitle");
|
||||
|
||||
$msg->print("multi-line\nprint");
|
||||
$msg->info("multi-line\ninfo");
|
||||
$msg->action("multi-line\naction");
|
||||
$msg->asuccess();
|
||||
$msg->action("multi-line\naction");
|
||||
$msg->step("multi-line\nstep");
|
||||
$msg->afailure();
|
||||
$msg->action("multi-line\naction");
|
||||
$msg->step("multi-line\nstep");
|
||||
$msg->asuccess("multi-line\nsuccess");
|
||||
$msg->action("multi-line\naction");
|
||||
$msg->step("multi-line\nstep");
|
||||
$msg->adone("multi-line\ndone");
|
||||
|
||||
$msg->end();
|
||||
$msg->end();
|
||||
});
|
||||
|
||||
$msg->section("Exceptions", function ($msg) {
|
||||
$e = new Exception("message");
|
||||
$u1 = new UserException("userMessage");
|
||||
$u2 = new UserException("userMessage", "techMessage");
|
||||
$msg->title("avec message", function ($msg) use ($e, $u1, $u2) {
|
||||
$msg->info(["exception", $e]);
|
||||
$msg->info(["userException1", $u1]);
|
||||
$msg->info(["userException2", $u2]);
|
||||
});
|
||||
$msg->title("sans message", function ($msg) use ($e, $u1, $u2) {
|
||||
$msg->info($e);
|
||||
$msg->info($u1);
|
||||
$msg->info($u2);
|
||||
});
|
||||
});
|
18
php/tbin/test-output-forever.php
Executable file
18
php/tbin/test-output-forever.php
Executable file
@ -0,0 +1,18 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
require(__DIR__.'/../vendor/autoload.php');
|
||||
|
||||
use nulib\UserException;
|
||||
use nulib\output\std\StdMessenger;
|
||||
use nulib\output\msg;
|
||||
|
||||
msg::set_messenger(new StdMessenger(), new StdMessenger([
|
||||
"output" => "output-forever.log",
|
||||
]));
|
||||
|
||||
$index = 1;
|
||||
while (true) {
|
||||
msg::info("info $index");
|
||||
$index++;
|
||||
sleep(1);
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
namespace nulib\app {
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
use nulib\app\impl\config;
|
||||
use nulib\app\impl\myapp;
|
||||
use nulib\app\impl\MyApplication1;
|
||||
use nulib\app\impl\MyApplication2;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class appTest extends TestCase {
|
||||
function testWith() {
|
||||
@ -19,13 +20,15 @@ namespace nulib\app {
|
||||
"bindir" => "$projdir/vendor/bin",
|
||||
"autoload" => "$projdir/vendor/autoload.php",
|
||||
],
|
||||
"appcode" => "nur-ture",
|
||||
"projcode" => "nulib-base",
|
||||
"cwd" => $cwd,
|
||||
"datadir" => "$projdir/devel",
|
||||
"etcdir" => "$projdir/devel/etc",
|
||||
"vardir" => "$projdir/devel/var",
|
||||
"logdir" => "$projdir/devel/log",
|
||||
"profile" => "devel",
|
||||
"facts" => null,
|
||||
"debug" => null,
|
||||
"appgroup" => null,
|
||||
"name" => "my-application1",
|
||||
"title" => null,
|
||||
@ -38,13 +41,15 @@ namespace nulib\app {
|
||||
"bindir" => "$projdir/vendor/bin",
|
||||
"autoload" => "$projdir/vendor/autoload.php",
|
||||
],
|
||||
"appcode" => "nur-ture",
|
||||
"projcode" => "nulib-base",
|
||||
"cwd" => $cwd,
|
||||
"datadir" => "$projdir/devel",
|
||||
"etcdir" => "$projdir/devel/etc",
|
||||
"vardir" => "$projdir/devel/var",
|
||||
"logdir" => "$projdir/devel/log",
|
||||
"profile" => "devel",
|
||||
"facts" => null,
|
||||
"debug" => null,
|
||||
"appgroup" => null,
|
||||
"name" => "my-application2",
|
||||
"title" => null,
|
||||
@ -63,13 +68,15 @@ namespace nulib\app {
|
||||
"bindir" => "$projdir/vendor/bin",
|
||||
"autoload" => "$projdir/vendor/autoload.php",
|
||||
],
|
||||
"appcode" => "nur-ture",
|
||||
"projcode" => "nulib-base",
|
||||
"cwd" => $cwd,
|
||||
"datadir" => "$projdir/devel",
|
||||
"etcdir" => "$projdir/devel/etc",
|
||||
"vardir" => "$projdir/devel/var",
|
||||
"logdir" => "$projdir/devel/log",
|
||||
"profile" => "devel",
|
||||
"facts" => null,
|
||||
"debug" => null,
|
||||
"appgroup" => null,
|
||||
"name" => "my-application1",
|
||||
"title" => null,
|
||||
@ -82,13 +89,15 @@ namespace nulib\app {
|
||||
"bindir" => "$projdir/vendor/bin",
|
||||
"autoload" => "$projdir/vendor/autoload.php",
|
||||
],
|
||||
"appcode" => "nur-ture",
|
||||
"projcode" => "nulib-base",
|
||||
"cwd" => $cwd,
|
||||
"datadir" => "$projdir/devel",
|
||||
"etcdir" => "$projdir/devel/etc",
|
||||
"vardir" => "$projdir/devel/var",
|
||||
"logdir" => "$projdir/devel/log",
|
||||
"profile" => "devel",
|
||||
"facts" => null,
|
||||
"debug" => null,
|
||||
"appgroup" => null,
|
||||
"name" => "my-application2",
|
||||
"title" => null,
|
||||
@ -99,12 +108,12 @@ namespace nulib\app {
|
||||
|
||||
namespace nulib\app\impl {
|
||||
|
||||
use nulib\app\app;
|
||||
use nulib\app\cli\Application;
|
||||
use nulib\os\path;
|
||||
use nulib\app\app;
|
||||
|
||||
class config {
|
||||
const PROJDIR = __DIR__.'/../..';
|
||||
const PROJDIR = __DIR__.'/../../..';
|
||||
|
||||
static function get_projdir(): string {
|
||||
return path::abspath(self::PROJDIR);
|
||||
|
@ -3,7 +3,6 @@
|
||||
namespace nulib\app;
|
||||
|
||||
use nulib\tests\TestCase;
|
||||
use nulib\app\args;
|
||||
|
||||
class argsTest extends TestCase {
|
||||
function testFrom_array() {
|
||||
|
@ -2,7 +2,7 @@
|
||||
namespace nulib\app\cli;
|
||||
|
||||
use nulib\app\args\Aodef;
|
||||
use nur\t\TestCase;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class AodefTest extends TestCase {
|
||||
protected static function assertArg(
|
||||
@ -156,4 +156,18 @@ class AodefTest extends TestCase {
|
||||
true, true, false,
|
||||
false, 0, 0, "");
|
||||
}
|
||||
|
||||
function testArgsdesc() {
|
||||
$aodef = new Aodef(["-o:value", "--longo"]);
|
||||
self::assertArg($aodef,
|
||||
["-o", "--longo"],
|
||||
true, true, false,
|
||||
true, 1, 1, "VALUE");
|
||||
|
||||
$aodef = new Aodef(["-o:file,suffix", "--longo"]);
|
||||
self::assertArg($aodef,
|
||||
["-o", "--longo"],
|
||||
true, true, false,
|
||||
true, 2, 2, "FILE SUFFIX");
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ namespace nulib\app\cli;
|
||||
use nulib\app\args\Aogroup;
|
||||
use nulib\app\args\Aolist;
|
||||
use nulib\app\args\Aosection;
|
||||
use nur\t\TestCase;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class AolistTest extends TestCase {
|
||||
function testGroup() {
|
||||
|
@ -2,7 +2,7 @@
|
||||
namespace nulib\app\cli;
|
||||
|
||||
use nulib\app\args\SimpleAolist;
|
||||
use nur\t\TestCase;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class SimpleAolistTest extends TestCase {
|
||||
function testOverride() {
|
||||
@ -56,4 +56,21 @@ class SimpleAolistTest extends TestCase {
|
||||
|
||||
self::assertTrue(true);
|
||||
}
|
||||
|
||||
function testRemainingArgs() {
|
||||
$aolist = new SimpleAolist([]);
|
||||
echo "$aolist\n"; #XXX
|
||||
|
||||
$aolist = new SimpleAolist([
|
||||
["name" => "args"],
|
||||
]);
|
||||
echo "$aolist\n"; #XXX
|
||||
|
||||
$aolist = new SimpleAolist([
|
||||
["args" => 2, "name" => "args"],
|
||||
]);
|
||||
echo "$aolist\n"; #XXX
|
||||
|
||||
self::assertTrue(true);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
namespace nulib\app\cli;
|
||||
|
||||
use nulib\app\args\SimpleArgsParser;
|
||||
use nur\t\TestCase;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class SimpleArgsParserTest extends TestCase {
|
||||
const NORMALIZE_ARGS = [
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
namespace nulib\app\config {
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
use nulib\app\config\impl\result;
|
||||
use nulib\app\config\impl\config1;
|
||||
use nulib\app\config\impl\config2;
|
||||
use nulib\app\config\impl\result;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class ConfigManagerTest extends TestCase {
|
||||
function testConfigurators() {
|
||||
|
@ -1,10 +1,10 @@
|
||||
<?php
|
||||
namespace nulib\db\sqlite;
|
||||
|
||||
use nulib\tests\TestCase;
|
||||
use nulib\cl;
|
||||
use nulib\db\Capacitor;
|
||||
use nulib\db\CapacitorChannel;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class SqliteStorageTest extends TestCase {
|
||||
static function Txx(...$values): void {
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
namespace nulib\mail;
|
||||
|
||||
use nur\t\TestCase;
|
||||
use nulib\tests\TestCase;
|
||||
|
||||
class MailTemplateTest extends TestCase {
|
||||
function testTemplate() {
|
||||
|
@ -1,11 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace nulib\php {
|
||||
use nulib\tests\TestCase;
|
||||
use nulib\ValueException;
|
||||
|
||||
use nulib\php\impl\C0;
|
||||
use nulib\php\impl\C1;
|
||||
use nulib\php\impl\SC;
|
||||
use nulib\tests\TestCase;
|
||||
use nulib\ValueException;
|
||||
use ReflectionException;
|
||||
|
||||
class funcTest extends TestCase {
|
||||
|
Loading…
x
Reference in New Issue
Block a user