SPIP-Cli

SPIP-Cli est une interface en ligne de commande pour SPIP.

SPIP-Cli sert à interagir avec SPIP depuis la ligne de commande, à la fois avant d’avoir un SPIP sous la main (installation, configuration…), puis ensuite pour administrer ou modifier un SPIP existant depuis un terminal.

L’outil fournit une liste de commandes utiles et génériques en rapport avec la distribution officielle de SPIP. Elles seront complétées au fur et à mesure. Les plugins peuvent ensuite fournir de nouvelles commandes supplémentaires propres à leurs besoins.

Installation

Pré-requis : Composer doit être installé sur la machine.

Les explications suivantes sont orientées autour d’une installation sous Linux, mais fonctionnent aussi sur Mac OS. Nous conseillons d’installer SPIP-Cli de manière globale sur tout le système. Pour cela, nous utilisons la commande sudo, qui lance les programmes avec les droits d’administration du système.

Récupérer Spip-Cli et l’installer :

sudo svn checkout svn://zone.spip.org/spip-zone/_outils_/spip-cli/trunk /opt/spip-cli
cd /opt/spip-cli
composer install

Lier les commandes spip pour un accès facile :

cd /opt/spip-cli/bin
# Commande 'spip' 
ln -s $(pwd)/spip /usr/local/bin/
# Commande 'spipmu' pour site mutualisé
ln -s $(pwd)/spipmu /usr/local/bin/
# Autocompletion (Linux)
ln -s $(pwd)/spip_console_autocomplete /etc/bash_completion.d/spip
# Autocompletion (MacOs)
ln -s $(pwd)/spip_console_autocomplete /usr/local/etc/bash_completion.d/spip

Spécificité d’installation MacOs/Mamp Mysql

Avec MacOs + MAMP, vous devrez peut-être effectuer les commandes suivantes en cas d’erreur de connexion à la base de donnée avec mysqli.

# Disposer de /var/mysql/mysql.sock
sudo mkdir /var/mysql
sudo chmod 755 /var/mysql
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock
# Disposer de /tmp/mysql.sock
sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

Source : StackOverFlow : mysql connect

Mise à jour

cd /opt/spip-cli
sudo svn up
composer update

Utilisation

Vous avez maintenant accès à la commande spip dans votre terminal. En lançant cette commande sans rien d’autre, cela affichera une liste des commandes disponibles ainsi que des options génériques.

Vous pouvez demander une aide plus précise sur une commande spécifique. Cela vous listera alors les arguments et options possibles :
spip help {commande}

Certaines commandes courantes ont des noms raccourcis supplémentaires assignés, afin de les appeler plus rapidement. Par exemple la commande spip core:telecharger peut s’appeler avec spip dl.

Commandes de base

Voici une liste rapide des commandes principales fournies :

auteurs
auteurs:superadmin Ajoute / supprime un webmestre temporaire.
cache
cache:desactiver Désactive le cache de spip pendant 24h.
cache:reactiver Réactive le cache de spip.
cache:vider Vider le cache.
core
core:installer Installer la base de données et le premier utilisateur.
core:maj:bdd Mettre à jour la base de données et configurations de SPIP.
core:mettreajour Mettre à jour la branche de SPIP qui est installée.
core:preparer Préparer les fichiers pour installer SPIP correctement.
core:telecharger Télécharger SPIP dans un dossier (par défaut, la dernière version stable)
plugins
plugins:activer Active un ou plusieurs plugins.
plugins:desactiver Désactive des plugins.
plugins:lister Lister les plugins activés.
plugins:maj:bdd Mettre à jour la base de données et configurations des plugins.
test
test:spip Vérifie notre connexion au site SPIP.
test:style Affiche les différents styles d’écriture (charte typo des commandes en CLI !).
texte
texte:propre Convertit du texte au format SPIP vers du HTML via la fonction « propre »
texte:typo Pareil vers typo

Technique

SPIP-Cli est développé en utilisant le composant Console de Symfony, dans sa version 2.8 pour l’instant. Nous recommandons donc la lecture de sa documentation afin de comprendre le fonctionnement.

Une application spip s’occupe déjà de découvrir si l’on se trouve ou non dans une installation de SPIP, de charger SPIP le cas échéant (inc_version.php), puis de charger toutes les commandes disponibles (fournies par d’éventuels plugins actifs sur le site).

Étendre les fonctionnalités

Il y a donc deux moyens d’ajouter une commande :
-  soit c’est une commande sympa qui ne concerne que le noyau (ou des choses en shell, genre appel de mysql, svn ou autre). Dans ce cas, cette commande peut aller dans le dossier src/Command/ du projet ;
-  soit on a une commande qui concerne un plugin précis (de la zone ou d’un projet perso) et il faut ajouter le fichier PHP dans un dossier spip-cli/ du plugin activé (il faut que ce soit un plugin activé pour que la commande apparaisse).

La règle est d’avoir :
-  une commande par classe, la plus circonscrite possible
-  une seule classe de commande par fichier PHP
-  au maximum possible un verbe à l’infinitif pour le dernier élément du nom, celui qui concerne l’action à faire

En revanche, on peut regrouper les commandes ensemble selon une hiérarchie, en séparant les noms avec les deux points «  : ». Par exemple plugins:activer et plugins:desactiver. La hiérarchie n’est pas limitée, mais il est conseillé de s’en tenir à deux éléments dans la majorité des cas. Parfois trois, mais il serait bien de ne pas dépasser ce nombre. On pourra par exemple imaginer regrouper toutes les fonctionnalités plus évoluées proposées par SVP sur les plugins avec plugins:svp:{commande}.

Quelques exemples de plugins qui l’utilisent

Des idées de commandes possibles

  • Gestion des auteurs
  • Gestion des médias
  • Gestion de la configuration
  • Gestion de synchronisation entre deux sites par SSH (IMG, données, etc)
  • et sûrement des millions d’autres idées que vous aurez !

Historique et Migration

Version 0.4

  • Les exécutables ont été déplacés dans le répertoire bin/ . Vous devez adapter vos liens symboliques en conséquence.
  • Les commandes sont déplacées src/Command
  • Les commandes core:maj:bdd et plugins:maj:bdd sont ajoutées
  • Les commandes plugins:lister, plugins:activer et plugins:desactiver sont revues et complétés par des options intéressantes
  • Tolère les sites SPIP mutualisés
  • L’exécutable spipmu permet d’appliquer une commande à plusieurs sites SPIP mutualisés.

Dernière modification de cette page le 4 décembre 2018

Discussion

6 discussions

  • 4

    Pour info, sur OSX j’ai installé spip-cli dans /usr/local/opt/ plutôt que dans /opt/ pour ne pas avoir à le faire en sudo.

    Sinon, par rapport à la doc d’installation il faut remplacer

    ln -s /opt/spip-cli/spip.php /usr/local/bin/spip

    par

    ln -s /opt/spip-cli/bin/spip /usr/local/bin/spip

    pour ne pas avoir le message « [deprecated] Veuillez utiliser les executables SPIP-Cli du répertoire bin. »

    • Corrigé dans la doc merci, c’est suite aux mises à jour de marcimat

    • Et en fait c’est pareil pour :

      sudo ln -s /opt/spip-cli/spip_completion.sh /etc/bash_completion.d/spip

      qui devient :

      sudo ln -s /opt/spip-cli/bin/spip_console_autocomplete /etc/bash_completion.d/spip

      J’ai corrigé directement l’article.

    • J’ai peut être écrasé quelque chose en intégrant la nouvelle doc à l’instant du coup…
      À vérifier

    • Je sais pas, tu as testé ta procédure d’installation ?

    Répondre à ce message

  • 5

    Hello,

    Existe-t-il une version de spip-cli pour spip mutualisés

    • Pour pouvoir faire fonctionner Spip-CLI sur un serveur accueillant des Spip en mutualisé, j’ai ajouter le code suivant dans la fonction « spip_charger.php ». Pouvez-vous me confirmer que c’est la bonne solution ?

      	if( is_dir('sites') ){
      		define('_NOM_PERMANENTS_ACCESSIBLES', $cwd."/IMG/");
      		define('_NOM_PERMANENTS_INACCESSIBLES', $cwd."/config/");
      		define('_NOM_TEMPORAIRES_ACCESSIBLES', $cwd."/local/");
      		define('_NOM_TEMPORAIRES_INACCESSIBLES', $cwd."/tmp/");
      	}
    • Vraiment aucune idée, je n’ai jamais utilisé la mutualisation de toute ma vie, donc je ne sais pas ce qui est propre ou pas pour cette fonctionnalité, désolé :(

    • Merci RastaPopoulos,

      L’ajout de ces 6 lignes ligne 162 de spip.php fonctionne chez moi. ça peut donc servir à d’autres ...

    • Super, merci pour ces autres :)

    • Pour info, maintenant, c’est plus facile.
      Et avec une doc : Spip-Cli en Mutualisation

    Répondre à ce message

  • 1

    Bonjour
    Je viens d’installer un site d’essai pour essayer spip-cli (juste un article publié)
    Si je fais la suite de commandes suivantes ça ne marche pas :

    1/ spip cache:vider
    2/ spip plugins:activer —all —yes
    3/ spip cache:vider

    1/ vide effectivement le cache (plus aucun fichier dans tmp/cache)

    2/ Il n’y a qu’un seul plugin à activer (Escal) , cette commande a pour conséquence la perte de la base de données : j’ai le message (en html) : Attention : un problème technique (serveur SQL) etc...
    Lorsque je recharge le site par le navigateur j’ai le même message, donc le site est dès lors inutilisable

    3/ vide le cache et arrange tous les problèmes d’accès à la base de données !!! Mais Escal n’est toujours pas activé...

    Je précise que je suis sous php 5.6 (Debian jessie), spip 3.1.7, j’ai installé spip-cli en utilisant subversion comme expliqué ici.

    Merci de vos précieux conseils !

    • Bonjour
      Je me réponds à moi-même : il manquait un paquet sur mon installation, maintenant tout est rentré dans l’ordre. Pardon pour le bruit j’aurais dû vérifier un peu mieux avant d’écrire ce message : la honte !
      Emmanuel

    Répondre à ce message

  • 1

    Bonjour,

    Tout d’abord, merci pour ce plugin vraiment très pratique.

    Un petit message rapide pour indiquer que si vous utilisez recuperer_fond dans un script spip-cli et que vous avez défini la variable de personnalisation $puce, il faut ajouter $puce à la liste des global de la fonction spip_charger()
    Sans cela, vos superbes puces perso ne seront pas prises en compte.

    Répondre à ce message

  • 2

    Bonjour,
    Je trouve cette initiative super surtout quand, comme moi, on aime énormément la ligne de commande.

    J’ai toutefois un soucis, je suis en PHP7.0 et dès que je lance la commande

    $ spip install -ds « mysql » -dh « localhost » -db « test » -dp « test » -dd « spip_cli » -ap « password »

    j’ai le message d’erreur suivant que je ne comprend pas

                     
      [RuntimeException]               
      The "-d" option does not exist.

    J’ai regardé vite fait le fichier CoreInstaller.php mais je ne vois rien de louche. Quelqu’un aurait une idée ?

    • SPIP-Cli embarque une vieille version du module Console de Symfony, donc c’est possible que ça ne soit pas compatible PHP7, oui.

      Il faudrait mettre à jour la librairie car elle marche sur la branche 5 (>= 5.5) et 7 à la fois, normalement. Mais il faut vérifier que tout fonctionne et il y a sûrement du code à revoir.

    • Merci pour cette réponse rapide. Je m’en doutais un peu mais je préférais avoir une confirmation avant de passer en PHP5 pour utiliser les commandes. Dans mon cas ça ne me dérange pas.
      Merci beaucoup.

    Répondre à ce message

  • 1

    Bonjour,
    est-ce qu’il y a moyen de télécharger le paquet sans SVN ?
    Merci d’avance

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom