Changeset 93343 in spip-zone for _plugins_/composer

Timestamp:
Dec 2, 2015, 12:19:30 PM (5 years ago)
Author:
marcimat@…
Message:

Ajout d'un plugin 'Composer' totalement expérimental.
Il peut être modifié / adapté / jeté sans trop de souci :)

Ce plugin tente de résoudre une quadrature de cercle
qu'il y a avec les plugins SPIP qui ont besoin de librairies
provenant de packages Composer. L'idéal serait peut être
que SPIP et les plugins soient tous packagés en composer,
mais on est loin de cet état :).

Ce qu'on propose ici est un entre deux : des plugins SPIP
peuvent nécessiter ce plugin et utiliser le pipeline preparer_composer_json
pour ajouter des informations à un fichier composer.json qui sera
généré dans le répertoire config/ à partir de tout ce qu'auront indiqué les plugins

On peut du coup, en terminal, aller dans config et exécuter Composer avec ce fichier,
ce qui installera les différentes lirairaies dans un répertoire vendor/ à la racine de
SPIP. Idéalement ce répertoire n'est pas accessible par le web. On aurait pu dire
que comme notre "permanent inaccessible" (_DIR_ETC, soit 'config/') est déjà là,
que l'on installe dans config/vendor les librairies. C'est à discuter il me semble.
Mais le nom config du coup ne parait pas très approprié. On aurait pu mettre dans
lib également, mais pareil, celui-ci est accessible sur le web, et c'est pas top.

Bref. En plus de génerer un composer.json, la page ?exec=composer peut tenter
de s'occuper de l'installation de Composer, sa mise à jour et de l'installation
des librairies, mais cela fait appel à exec() et certaines commandes (curl, php)
qui ne seront peut être pas présentes sur le serveur.

Par ailleurs la sortie des commandes exécutées est affichée après toute l'exécution,
et non en stream, ce qui serait moins angoissant que d'attendre en espérant que ça
marche :) IL faudrait un peu de log aussi.

Enfin, donc, ce fichier composer.json est généré automatiquement s'il n'existe pas, ou
si l'on passe sur la page d'admin des plugins.

Et l'autoloader généré est appelé par le fichier d'option du plugin, ce qui fait
qu'à partir du moment où ce fichier option est là, les plugins ont accès aux classes
présentes dans vendor facilement.

Location:
_plugins_/composer
Files:
32 added

Note: See TracChangeset for help on using the changeset viewer.