68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/php
 | 
						|
<?php
 | 
						|
require $_composer_autoload_path?? __DIR__.'/../vendor/autoload.php';
 | 
						|
 | 
						|
use nur\sery\output\msg;
 | 
						|
use nur\sery\wip\app\app2;
 | 
						|
use nur\sery\wip\app\cli\Application;
 | 
						|
use nur\sery\wip\app\cli\bg_launcher;
 | 
						|
use nur\yaml;
 | 
						|
 | 
						|
class BgLauncherApp extends Application {
 | 
						|
  const PROJDIR = __DIR__.'/../..';
 | 
						|
 | 
						|
  const ACTION_INFOS = 0, ACTION_START = 1, ACTION_STOP = 2;
 | 
						|
  const ARGS = [
 | 
						|
    "purpose" => "lancer un script en tâche de fond",
 | 
						|
    "usage" => "ApplicationClass args...",
 | 
						|
 | 
						|
    ["-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;
 | 
						|
 | 
						|
  function main() {
 | 
						|
    $appClass = $this->args[0] ?? null;
 | 
						|
    if ($appClass === null) {
 | 
						|
      self::die("Vous devez spécifier la classe de l'application");
 | 
						|
    }
 | 
						|
    $appClass = str_replace("/", "\\", $appClass);
 | 
						|
    if (!class_exists($appClass)) {
 | 
						|
      self::die("$appClass: classe non trouvée");
 | 
						|
    }
 | 
						|
    $args = array_slice($this->args, 1);
 | 
						|
 | 
						|
    $useRunfile = constant("$appClass::USE_RUNFILE");
 | 
						|
    if (!$useRunfile) {
 | 
						|
      self::die("Cette application ne supporte le lancement en tâche de fond");
 | 
						|
    }
 | 
						|
 | 
						|
    $runfile = app2::with($appClass)->getRunfile();
 | 
						|
    switch ($this->action) {
 | 
						|
    case self::ACTION_START:
 | 
						|
      bg_launcher::_start($args, $runfile);
 | 
						|
      break;
 | 
						|
    case self::ACTION_STOP:
 | 
						|
      bg_launcher::_stop($runfile);
 | 
						|
      break;
 | 
						|
    case self::ACTION_INFOS:
 | 
						|
      yaml::dump($runfile->read());
 | 
						|
      break;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
$params = app2::params_getenv();
 | 
						|
if ($params !== null) app2::init($params);
 | 
						|
BgLauncherApp::run();
 |