From 850609ef08ab86f3d819e9bbea542ac46fbaa149 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 28 Nov 2024 22:18:16 +0400 Subject: [PATCH] =?UTF-8?q?d=C3=A9placer=20nulib/tools=20dans=20nur/sery/t?= =?UTF-8?q?ools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- php/src/tools/BgLauncherApp.php | 124 -------------------------------- php/src/tools/SteamTrainApp.php | 53 -------------- 2 files changed, 177 deletions(-) delete mode 100644 php/src/tools/BgLauncherApp.php delete mode 100644 php/src/tools/SteamTrainApp.php diff --git a/php/src/tools/BgLauncherApp.php b/php/src/tools/BgLauncherApp.php deleted file mode 100644 index 88aa522..0000000 --- a/php/src/tools/BgLauncherApp.php +++ /dev/null @@ -1,124 +0,0 @@ - "lancer un script en tâche de fond", - "usage" => "ApplicationClass args...", - - "sections" => [ - parent::VERBOSITY_SECTION, - ], - - ["-i", "--infos", "name" => "action", "value" => self::ACTION_INFOS, - "help" => "Afficher des informations sur la tâche", - ], - ["-s", "--start", "name" => "action", "value" => self::ACTION_START, - "help" => "Démarrer la tâche", - ], - ["-k", "--stop", "name" => "action", "value" => self::ACTION_STOP, - "help" => "Arrêter la tâche", - ], - ]; - - protected int $action = self::ACTION_START; - - protected ?array $args = null; - - static function show_infos(RunFile $runfile, ?int $level=null): void { - msg::print($runfile->getDesc(), $level); - msg::print(yaml::with(["data" => $runfile->read()]), ($level ?? 0) - 1); - } - - function main() { - $args = $this->args; - - $appClass = $args[0] ?? null; - if ($appClass === null) { - self::die("Vous devez spécifier la classe de l'application"); - } - $appClass = $args[0] = str_replace("/", "\\", $appClass); - if (!class_exists($appClass)) { - self::die("$appClass: classe non trouvée"); - } - - $useRunfile = constant("$appClass::USE_RUNFILE"); - if (!$useRunfile) { - self::die("Cette application ne supporte le lancement en tâche de fond"); - } - - $runfile = app::with($appClass)->getRunfile(); - switch ($this->action) { - case self::ACTION_START: - $argc = count($args); - $appClass::_manage_runfile($argc, $args, $runfile); - if ($runfile->warnIfLocked()) self::exit(app::EC_LOCKED); - array_splice($args, 0, 0, [ - PHP_BINARY, - path::abspath(NULIB_APP_app_launcher), - ]); - app::params_putenv(); - self::_start($args, $runfile); - break; - case self::ACTION_STOP: - self::_stop($runfile); - self::show_infos($runfile, -1); - break; - case self::ACTION_INFOS: - self::show_infos($runfile); - break; - } - } - - public static function _start(array $args, Runfile $runfile): void { - $pid = pcntl_fork(); - if ($pid == -1) { - # parent, impossible de forker - throw new ExitError(app::EC_FORK_PARENT, "Unable to fork"); - } elseif (!$pid) { - # child, fork ok - $runfile->wfPrepare($pid); - $outfile = $runfile->getOutfile() ?? "/tmp/NULIB_APP_app_console.out"; - $exitcode = app::EC_FORK_CHILD; - try { - # rediriger STDIN, STDOUT et STDERR - fclose(fopen($outfile, "wb")); // vider le fichier - fclose(STDIN); $in = fopen("/dev/null", "rb"); - fclose(STDOUT); $out = fopen($outfile, "ab"); - fclose(STDERR); $err = fopen($outfile, "ab"); - # puis lancer la commande - $cmd = new Cmd($args); - $cmd->addSource("/g/init.env"); - $cmd->addRedir("both", $outfile, true); - $cmd->fork_exec($exitcode, false); - sh::_waitpid(-$pid, $exitcode); - } finally { - $runfile->wfReaped($exitcode); - } - } - } - - public static function _stop(Runfile $runfile): bool { - $data = $runfile->read(); - $pid = $runfile->_getCid($data); - msg::action("stop $pid"); - if ($runfile->wfKill($reason)) { - msg::asuccess(); - return true; - } else { - msg::afailure($reason); - return false; - } - } -} diff --git a/php/src/tools/SteamTrainApp.php b/php/src/tools/SteamTrainApp.php deleted file mode 100644 index 7e00ef0..0000000 --- a/php/src/tools/SteamTrainApp.php +++ /dev/null @@ -1,53 +0,0 @@ - self::TITLE, - "description" => << 1, - "help" => "spécifier le nombre d'étapes", - ], - ["-f", "--force-enabled", "value" => true, - "help" => "lancer la commande même si les tâches planifiées sont désactivées", - ], - ["-n", "--no-install-signal-handler", "value" => false, - "help" => "ne pas installer le gestionnaire de signaux", - ], - ]; - - protected $count = 100; - - protected bool $forceEnabled = false; - - protected bool $installSignalHandler = true; - - function main() { - app::check_bgapplication_enabled($this->forceEnabled); - if ($this->installSignalHandler) app::install_signal_handler(); - $count = intval($this->count); - msg::info("Starting train for ".words::q($count, "step#s")); - app::action("Running train...", $count); - for ($i = 1; $i <= $count; $i++) { - msg::print("Tchou-tchou! x $i"); - app::step(); - sleep(1); - } - msg::info("Stopping train at ".new DateTime()); - } -}