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 git clone https://git.spip.net/spip-contrib-outils/spip-cli.git /opt/spip-cli
cd /opt/spip-cli
sudo composer installLier les commandes spip pour un accès facile :
cd /opt/spip-cli/bin
# Commande 'spip'
sudo ln -s $(pwd)/spip /usr/local/bin/
# Commande 'spipmu' pour site mutualisé
sudo ln -s $(pwd)/spipmu /usr/local/bin/
# Autocompletion (Linux)
sudo ln -s $(pwd)/spip_console_autocomplete /etc/bash_completion.d/spip
# Autocompletion (MacOs)
sudo ln -s $(pwd)/spip_console_autocomplete /usr/local/etc/bash_completion.d/spipVoir aussi pour l’installation sur un serveur mutualisé : https://momh.fr/spip-cli-sur-serveur-mutualise
Mise à jour
cd /opt/spip-cli
sudo git pull
composer updateUtilisation
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 :
| dl | Télécharger SPIP dans un dossier (par défaut, la dernière version stable) |
| extraire_balise | Extrait la première balise du type fourni avec l’option -b. Exemple spip extraire_balise -b title pour extraire le titre de la page |
| extraire_balises | Extrait les balises du type fourni avec l’option -b. Exemple spip extraire_balises -b p pour extraire les paragraphes |
| help | Displays help for a command |
| install | Installer la base de données et le premier utilisateur. |
| installer | Installer la base de données et le premier utilisateur. |
| list | Lists commands |
| textebrut | Convertit un texte HTML en texte brut. |
| up | Mettre à jour la branche de SPIP qui est installée. |
| update | Mettre à jour la branche de SPIP qui est installée. |
| versions | Liste les versions de SPIP |
| auteurs:changer:statut | Changer le statut d’un auteur |
| auteurs:creer | Créer ou modifier un auteur (identifié selon id, sinon login, sinon email) |
| auteurs:lister | Liste les auteurs d’un site |
| auteurs:superadmin | Ajoute / supprime un webmestre observateur (id_auteur = -1). |
| cache:desactiver | Désactive le cache de spip pendant 24h. |
| cache:reactiver | Réactive le cache de spip. |
| cache:vider | Vider le cache. |
| core:installer | Installer la base de données et le premier utilisateur. |
| core:listerversions | Liste les versions de SPIP |
| 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) |
| filtres:extraire_balise | Extrait la première balise du type fourni avec l’option -b. Exemple spip extraire_balise -b title pour extraire le titre de la page |
| filtres:extraire_balises | Extrait les balises du type fourni avec l’option -b. Exemple spip extraire_balises -b p pour extraire les paragraphes |
| filtres:textebrut | Convertit un texte HTML en texte brut. |
| images:verifier:extensions | Vérifier les extensions d’images du répertoire IMG |
| integraal:generer | Génèrer un nouveau projet à partir de l‘échafaudage Intégraal. |
| php:eval | Évaluer du code PHP dans un contexte SPIPien. |
| plugins:activer | Active un ou plusieurs plugins. |
| plugins:desactiver | Désactive un ou plusieurs plugins |
| plugins:lister | Liste les plugins du site. |
| plugins:listerheader | Export la liste des plugins du site telle stockée en base (peut-être tronquée si trop de plugins). |
| plugins:maj:bdd | Mettre à jour la base de données et configurations des plugins. |
| plugins:svp:depoter | Ajouter un depot |
| plugins:svp:telecharger | Telecharger un plugin depuis les dépôts. |
| root:me | Ajoute / supprime un webmestre observateur (id_auteur = -1). |
| server:locate | Localiser les SPIP installés sur ce serveur |
| sql:convert:tomysql | Convertit un site vers mysql (utile pour un site en sqlite) |
| sql:convert:toutf8 | Convertit une base en UTF8 (utile pour un site en mysql) |
| sql:dump:create | Crée un dump SPIP. |
| sql:dump:restore | Restaure un dump SPIP. |
| sql:optimize | Optimize les tables SQL |
| sql:repair | Crée les tables et champs manquants et tente de réparer chaque table de la base de données. |
| sql:show:base | Liste les tables de la BDD. |
| sql:show:diff | Liste les tables et champs présents mais non déclarés à SPIP, ou inversement. |
| sql:show:table | Décrit une table dans la base de données. |
| synchro:bdd | Synchroniser la BDD du SPIP depuis celle d’un autre site (avec maj des metas pour conserver les paramètres spécifiques du SPIP, cf config générée via synchro:init) |
| synchro:fichiers | Synchroniser les dossiers du SPIP depuis un autre site option (IMG ou/et autre dossiers configurés via synchro:init) |
| synchro:init | Initialiser le json de configuration pour la synchro |
| test:spip | Vérifie notre connexion au site SPIP. |
| test:style | Affiche les différents styles d’écriture. |
| texte:propre | Convertit du texte au format SPIP vers du HTML via la fonction “propre” |
| texte:typo | Convertit une phrase vers du HTML via la fonction “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:bddetplugins:maj:bddsont ajoutées - Les commandes
plugins:lister,plugins:activeretplugins:desactiversont revues et complétés par des options intéressantes - Tolère les sites SPIP mutualisés
- L’exécutable
spipmupermet d’appliquer une commande à plusieurs sites SPIP mutualisés.
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.sockSource : StackOverFlow : mysql connect
Spécificités d’installation sous Windows
- la machine doit disposer d’un serveur web complet avec PHP et MySQL/MariaDB. Pour une installation fonctionnelle de AMP (Apache / PHP / MySQL|MariaDB) vous pouvez utiliser par exemple Laragon ou XAMPP
- il faut que les executables de PHP et MySQL/Mariadb soient dans le PATH de la machine (local ou global peu importe). Pour cela éditer les variables d’environnement de la machine:
Panneau de configuration > Système > Paramètres systèmes avancés > Variables d’environnement... : dans la variable Path de votre utilisateur (= install locale, pour vous seul) ou dans celle du système (install globale, tous les utilisateurs), ajouter les chemins de php.exe et mysql.exe (précédés d’un ;), par exempleC:\laragon\bin\php\php-7.1.25-Win32-VC14-x64etC:\laragon\bin\mysql\mariadb-10.3.10-winx64\bin
- de la même manière il faut mettre dans le PATH le sous-dossier bin de spip-cli: par exemple
C:\laragon\bin\spip-cli\bin(si on suppose que vous avez installé spip-cli dans le dossier bin/ de votre Laragon pour cet exemple)
- pour éviter un blocage bizarre au lancement des commandes de spip-cli, (fonction PHP date_default_timezone_set() qui bloque et nécessite de re-valider par Entrée le lancement ???), il est indispensable que le paramètre date.timezone soit défini dans le php.ini de votre serveur web. Par ex
date.timezone = Europe/Paris: à vérifier en ouvrant la page de l’espace privé ...ecrire/?exec=info et en recherchant dans le phpinfo qui s’affiche que dans le bloc date vous avez bien une directive date.timezone configurée. Sinon, éditez votre php.ini pour ajouter la directive. - il est vivement conseillé de ne pas utiliser l’invite de commande de Windows (cmd.exe) pour travailler avec spip-cli mais plutôt un terminal “Unix-like” qui permet d’utiliser toutes les commandes bash/sh standard, par exemple Gitbash fourni par l’installation de Git de https://gitforwindows.org/
- Avec les pré-requis précédents, voici un exemple d’installation sous Laragon windows
# aller dans le laragon/bin cd c:/laragon/bin # cloner le depot git clone https://git.spip.net/spip-contrib-outils/spip-cli.git # installation composer cd spip-cli composer install # créer un raccourci pour accéder à la commande ln -s /c/laragon/bin/spip-cli/bin/spip /c/laragon/usr/bin/spip

Discussions by date of activity
17 discussions
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
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.
Salut,
j’ai le même message pour une installation en mySQL (pas de problème en sqlite) :
Sur une installation locale laragon / PHP7.3 (mais testé aussi en 5.6 au cas où) avec la commande
$spip core:installer -ds "mysql" -dh "localhost" -dd "labase" -dl "root" -dp ""Je rate quoi ?
Parce que les raccourcis à plusieurs lettres ne sont pas forcément supportés : https://github.com/symfony/symfony/issues/8322
Faut que j’arrête de faire ça…
Ah oui, ça marche sans les raccourcis.
C’est bon avec
$spip core:installer --db-server "mysql" --db-login "root" --db-pass "" --db-database "spipcli"Merci pour ce script !
Reply to this message
QUestion : comment peut basculer d’une branche spip à l’autre? d’une 3.1 à une 3.2 par ex ? Je ne vois rien ici ni en tapant spip dans mon terminal
C’était possible dans l’ancienne version, si tu spécifiais une branche ou un tag différent, et ça faisait tout simplement un “svn switch”. Mais ce n’est plus possible dans la version actuelle copiée de checkout. Il faut recoder ça pour git, normalement c’est juste un “co” à faire sur une autre branche ou tag.
Reply to this message
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
par
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 :
qui devient :
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 ?
Je viens de le réinstaller chez moi, il faut en effet bien faire attention au bin/ et ça marche, MAIS il faut ensuite aller éditer
protected function optimizeTable(string $table, bool $reorder = false) {en
protected function optimizeTable(string $table, bool $reorder) {sinon on a
Fatal error: Default value for parameters with a class type hint can only be NULL in /opt/spip-cli/src/Command/SqlOptimize.php on line 43(en tout cas sous PHP 5.6.40-0+deb8u1 (cli) (built: Feb 17 2019 03:57:32))
Reply to this message
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 ?
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
Reply to this message
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
Reply to this message
Bonjour,
Tout d’abord, merci pour ce plugin vraiment très pratique.
Un petit message rapide pour indiquer que si vous utilisez
recuperer_fonddans 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 fonctionspip_charger()Sans cela, vos superbes puces perso ne seront pas prises en compte.
http://zone.spip.org/trac/spip-zone/changeset/104005
Reply to this message
Bonjour,
est-ce qu’il y a moyen de télécharger le paquet sans SVN?
Merci d’avance
D’après http://lapsuske.brubel.net/Recuperer-un-zip-depuis-le-site-de-la-zone-SPIP
tu peux utiliser ce lien :
http://zone.spip.org/trac/spip-zone/changeset/latest/_outils_/spip-cli?old_path=/&format=zipCette astuce de Trac devrait être plus connue ^^
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
