Valider 1ef382cf rédigé par b_b's avatar b_b
Parcourir les fichiers

plugins:svp:telecharger survoltée !

PluginsSvpTelecharger passe en extend de PluginsActiver afin de bénéficier de ces arguments et de toutes ses options

on ne surcharge que le titre de la classe et la méthode activePlugins qui reprend ce que faisait la classe avant

ainsi, on peut bénéficier de toute les options sympas de plugins:activer dans plugins:svp:telecharger, comme par exemple `spip plugins:svp:telecharger --from-url https://www.spip.net/` afin d'activer les mêmes plugins qu'un site distant sur le site local

fix #18

thx @marcimat & @rastapopoulos pour les conseils avisés :)
parent 5a27ff1f
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+2 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -11,6 +11,7 @@ use Symfony\Component\Console\Question\Question;
class PluginsActiver extends PluginsLister
{

	protected $title = "Activer des plugins";
	protected $todo = [];

	protected function configure() {
@@ -30,7 +31,7 @@ class PluginsActiver extends PluginsLister

	protected function execute(InputInterface $input, OutputInterface $output) {
		$this->demarrerSpip();
		$this->io->title("Activer des plugins");
		$this->io->title($this->title);

		if ($input->getOption('from-file')) {
			$this->addTodo($this->getPrefixesFromFile($input->getOption('from-file')));
+57 −69
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -11,52 +11,41 @@ use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Question\ConfirmationQuestion;

class PluginsSvpTelecharger extends Command
class PluginsSvpTelecharger extends PluginsActiver
{

	protected $title = "Télécharger des plugins";

	protected function configure()
	{
		$this
		->setName('plugins:svp:telecharger')
		->setDescription('Telecharger un plugin depuis les dépôts.')
		->addArgument(
			'prefix',
			InputArgument::IS_ARRAY,
			'La liste des prefixes de plugins à télécharger.'
		)
		;
	}
	
	protected function execute(InputInterface $input, OutputInterface $output)
	{
		global $spip_loaded;
		global $spip_racine;
		global $cwd;
		
		if ($spip_loaded) {
			chdir($spip_racine);
			
			$plugins_prefix = $input->getArgument('prefix');
			
			if (empty($plugins_prefix)) {
				$output->writeln("<error>Aucun plugin demandé</error>");
				return;
		->setDescription('Télécharger des plugins depuis les dépôts.')
		->addArgument('from', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'Active les plugins listés. Détermine automatiquement l’option from-xxx.')
		->addOption('from-file', null, InputOption::VALUE_OPTIONAL, 'Chemin d’un fichier d’export')
		->addOption('from-url', null, InputOption::VALUE_OPTIONAL, 'Url d’un site SPIP')
		->addOption('from-list', null, InputOption::VALUE_OPTIONAL, 'Liste de préfixes à activer, séparés par virgule')
		->addOption('import', 'e', InputOption::VALUE_NONE, 'Importer la liste des plugins actifs depuis un fichier')
		->addOption('name', null, InputOption::VALUE_OPTIONAL, 'Nom du fichier d’import', 'plugins')
		->addOption('all', 'a', InputOption::VALUE_NONE, "Activer tous les plugins disponibles.")
		->addOption('short', null, InputOption::VALUE_NONE, 'Affiche simplement le préfixe sur la liste des plugins actifs')
		->addOption('yes', 'y', InputOption::VALUE_NONE, 'Activer les plugins sans poser de question');
	}
	
			$output->writeln("<comment>Liste des plugins demandés : ".implode(',', $plugins_prefix)."</comment>");
			
	public function activePlugins($prefixes) {
		include_spip('inc/svp_decider');
		include_spip('inc/svp_actionner');
		
		$decideur = new \Decideur;
		$actionneur = new \Actionneur();
		
			foreach ($plugins_prefix as $prefix) {
				$output->writeln("<comment>Plugin en cours d'installation : ".$prefix."</comment>");
		foreach ($prefixes as $prefix) {
			$this->io->writeln("<comment>Plugin en cours d'installation : ".$prefix."</comment>");
			$infos = $decideur->infos_courtes(
				'UPPER(pl.prefixe) = LOWER("'.strtoupper($prefix).'")'
			);
			if (empty($infos['i'])) {
					$output->writeln("<error>Le plugin ".$prefix." n'est pas référencé</error>");
				$this->io->writeln("<error>Le plugin ".$prefix." n'est pas référencé</error>");
				continue;
			}
			$a_installer[key($infos['i'])] = 'geton';
@@ -64,19 +53,19 @@ class PluginsSvpTelecharger extends Command
			$res = $decideur->verifier_dependances($a_installer);
			
			if (!$decideur->ok) {
					$output->writeln("<error>Le plugin ".$prefix." ne peut être installé :</error>");
				$this->io->writeln("<error>Le plugin ".$prefix." ne peut être installé :</error>");
				foreach ($decideur->err as $id => $errs) {
					foreach ($errs as $err) {
							$output->writeln("<error>    ".$err."</error>");
						$this->io->writeln("<error>    ".$err."</error>");
					}
				}
				continue;
			}

			$actions = $decideur->presenter_actions('todo');
				$output->writeln("<comment>Pour l'installation du plugin ".$prefix." les actions suivantes sont prévues : </comment>");
			$this->io->writeln("<comment>Pour l'installation du plugin ".$prefix." les actions suivantes sont prévues : </comment>");
			foreach ($actions as $action) {
					$output->writeln("<comment>\t".$action."</comment>");
				$this->io->writeln("<comment>\t".$action."</comment>");
			}
			foreach ($decideur->todo as $_todo) {
				$todo[$_todo['i']] = $_todo['todo'];
@@ -86,7 +75,7 @@ class PluginsSvpTelecharger extends Command
			$actionneur->sauver_actions();
			
			while ($res = $actionneur->one_action()) {
					$output->writeln("<comment>".$res['n']." action réalisée : ".$res['todo']."</comment>");
				$this->io->writeln("<comment>".$res['n']." action réalisée : ".$res['todo']."</comment>");
			}
		
			$actionneur->deverrouiller();
@@ -97,4 +86,3 @@ class PluginsSvpTelecharger extends Command
		}
	}
}
}