Changeset 111451 in spip-zone


Ignore:
Timestamp:
Aug 27, 2018, 6:34:51 PM (8 months ago)
Author:
root
Message:

Lorsqu’on active ou désactive un plugin, lister les erreurs de dépendances. C’est plus pratique pour comprendre pourquoi un plugin ne s’active pas.

Location:
_outils_/spip-cli/trunk/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/src/Application.php

    r110954 r111451  
    1717
    1818        const NAME = "Spip Cli";
    19         const VERSION = "0.5.0";
     19        const VERSION = "0.5.1";
    2020
    2121        /** @var Container */
  • _outils_/spip-cli/trunk/src/Command/PluginsActiver.php

    r110950 r111451  
    183183                        $this->io->text("Plugins actifs après action :");
    184184                        $this->showPlugins($actifs);
     185                        $this->showPluginsErrors();
    185186                        $this->actualiserSVP();
    186187                }
  • _outils_/spip-cli/trunk/src/Command/PluginsDesactiver.php

    r110824 r111451  
    100100                $this->io->text("Plugins actifs après action :");
    101101                $this->showPlugins($actifs);
     102                $this->showPluginsErrors();
    102103                $this->actualiserSVP();
    103104        }
  • _outils_/spip-cli/trunk/src/Command/PluginsLister.php

    r111307 r111451  
    224224                }
    225225        }
     226
     227        /**
     228         * Retourne un tableau ['message d’erreur' => [liste détaillée]]
     229         *
     230         * @return array
     231         */
     232        public function getPluginsErrors() {
     233                $alertes = [];
     234                if (isset($GLOBALS['meta']['message_crash_plugins'])
     235                        and $GLOBALS['meta']['message_crash_plugins']
     236                        and is_array($msg = unserialize($GLOBALS['meta']['message_crash_plugins']))
     237                ) {
     238                        $msg = implode(', ', array_map('joli_repertoire', array_keys($msg)));
     239                        $msg = _T('plugins_erreur', array('plugins' => $msg));
     240                        $msg = $this->html_entity_to_utf8($msg);
     241                        $alertes[$msg] = [];
     242                }
     243                if (isset($GLOBALS['meta']['plugin_erreur_activation'])) {
     244                        include_spip('inc/plugin');
     245                        $erreurs = plugin_donne_erreurs(true);
     246                        foreach ($erreurs as $plugin => $liste) {
     247                                $msg = _T('plugin_impossible_activer', array('plugin' => $plugin));
     248                                $msg = $this->html_entity_to_utf8($msg);
     249                                $alertes[$msg] = $this->html_entity_to_utf8($liste);
     250                        }
     251                }
     252                return $alertes;
     253        }
     254
     255        public function showPluginsErrors() {
     256                if ($erreurs = $this->getPluginsErrors()) {
     257                        $this->io->error("Des erreurs sont présentes");
     258                        foreach($erreurs as $msg => $details) {
     259                                $this->io->fail($msg);
     260                                $this->io->listing($details, 2);
     261                        }
     262                }
     263        }
     264
     265        /** Transforme les > en > */
     266        public function html_entity_to_utf8($msg) {
     267                if (is_array($msg)) {
     268                        return array_map([$this, 'html_entity_to_utf8'], $msg);
     269                }
     270                return html_entity_decode($msg, ENT_COMPAT | ENT_HTML401, 'UTF-8');
     271        }
    226272}
  • _outils_/spip-cli/trunk/src/Console/Style/SpipCliStyle.php

    r110765 r111451  
    1111
    1212        public function check($message) {
    13                 $this->prependText($message, ' <fg=green>✔</> ');
     13                $this->prependText($message, '<fg=green>✔</> ');
    1414        }
    1515
    1616        public function fail($message) {
    17                 return $this->prependText($message, ' <fg=red>✘</> ');
     17                return $this->prependText($message, '<fg=red>✘</> ');
    1818        }
    1919
    2020        public function care($message) {
    21                 return $this->prependText($message, ' <fg=yellow;options=bold>!</> ');
     21                return $this->prependText($message, '<fg=yellow;options=bold>!</> ');
     22        }
     23
     24        /**
     25         * Listing, qui permet d’indiquer une profondeur
     26         *
     27         * Pratique pour des sous listes avce check, fail ou care
     28         *
     29         *     $io->fail('Mince vous avez des erreurs');
     30         *     $io->listing(['Erreur 1', 'Erreur 2'], 2);
     31         *
     32         * @param array $elements
     33         * @param int $profondeur
     34         */
     35        public function listing(array $elements, $profondeur = 1)
     36        {
     37                if ($profondeur == 1) {
     38                        parent::listing($elements);
     39                } else {
     40                        $format = ' ' . str_repeat('  ', $profondeur - 1) . '* %s';
     41                        $elements = array_map(function ($element) use ($format) {
     42                                return sprintf($format, $element);
     43                        }, $elements);
     44
     45                        $this->writeln($elements);
     46                        $this->newLine();
     47                }
    2248        }
    2349
Note: See TracChangeset for help on using the changeset viewer.