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 git clone https://git.spip.net/spip-contrib-outils/spip-cli.git /opt/spip-cli
cd /opt/spip-cli
sudo composer install

Lier 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/spip

Voir 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 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 :

Raccourcis
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
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
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: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
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
images:verifier:extensions Vérifier les extensions d’images du répertoire IMG
integraal
integraal:generer Génèrer un nouveau projet à partir de l‘échafaudage Intégraal.
php
php:eval Évaluer du code PHP dans un contexte SPIPien.
plugins
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
root:me Ajoute / supprime un webmestre observateur (id_auteur = -1).
server
server:locate Localiser les SPIP installés sur ce serveur
sql
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
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
test:spip Vérifie notre connexion au site SPIP.
test:style Affiche les différents styles d’écriture.
texte
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: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.

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

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 exemple C:\laragon\bin\php\php-7.1.25-Win32-VC14-x64 et C:\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 /c/laragon/usr/bin

Discussion

14 discussions

  • 2

    Bonjour, Félicitations pour cet outil qui est très puissant et prometteur.
    A manipuler avec précautions car il peut aussi ’tout casser’.
    Dans la collection des prés-requis il m’a manqué : raphf.
    L’autre indication est qu’il est, me semble-t-il, indispensable de déposer spip dans un dossier vide.
    Je reste étonné sur le fait que l’ensemble des éléments de spip soit en root:root et j’aurais préféré qu’ils soient en www-data:www-data car sous nginx, ubuntu 22.04, php 8.2 et mariadb.
    Cordialement.

    Répondre à ce message

  • 1

    Bonjour,
    Une question car je ne vois nulle part dans la doc la liste des paramètres autorisés/requis pour lancer une commande spip install.
    Je souhaite appeler cette commande avec un serveur de base de données MySQL distant, qui n’écoute pas sur le port 3306 mais sur un autre port.
    Est-ce que la syntaxe
    —db-host [mon serveur] :[le port MySQL d’écoute] sera valide ?
    Merci de votre aide !

    • Ça demande les mêmes infos que lors de l’install de SPIP en web, qui ne demande pas le port non plus il me semble, donc je suppose que c’est pareil.

    Répondre à ce message

  • 4

    Bonjour,

    Tout d’abord, merci pour vos efforts sur cet outil.

    Je suis face à une difficulté que je ne comprends pas : lorsque je tente de faire une installation de la base de données.

    — > PHP8 (problème identique avec PHP7)
    — > SPIP 4.1.1 du 1er avril 2022
    — > SPIP-CLI (branche master à jour)

    Je tente une installation de SPIP minimale sous docker :

    FROM php:8-apache
    
    ARG URL_PAQUET_SPIP
    
    # GESTION ET INSTALLATION DES DÉPENDANCES
    RUN apt-get update && apt-get upgrade -y
    RUN apt-get install -y git wget libzip-dev zip && docker-php-ext-install zip
    # RÉCUPÉRATION DE COMPOSER --> 2.3.5 du 2022-04-13
    RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
    RUN php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    RUN php composer-setup.php
    RUN php -r "unlink('composer-setup.php');"
    RUN mv composer.phar /usr/local/bin/composer
    
    # RÉCUPÉRATION DE SPIP
    RUN wget -O /var/www/html/spip.zip ${URL_PAQUET_SPIP}
    RUN unzip /var/www/html/spip.zip
    # RÉCUPÉRATION DE SPIP-CLI
    RUN git clone https://git.spip.net/spip-contrib-outils/spip-cli.git /opt/spip-cli
    RUN cd /opt/spip-cli && composer install && cd /opt/spip-cli/bin && ln -s $(pwd)/spip /usr/local/bin/ && ln -s $(pwd)/spipmu /usr/local/bin/ && ln -s $(pwd)/spip_console_autocomplete /etc/bash_completion.d/spip
    
    # CONFIGURATION DE SPIP VIA SPIP-CLI
    # -> une connexion sur le conteneur de la bdd et un : "ping erasme_spip" atteint correctement le conteneur erasme_spip
    RUN spip core:preparer -d 2770 --auto
    RUN spip core:installer --db-host "erasme_spip" --db-login "spip" --db-database "spip" --db-pass "spip" --admin-nom "spip" --admin-login "spip" --admin-pass "spip" --admin-email "paracine@erasme.org" --db-server "mysql"
    
    COPY sq-erasme/ /var/www/html/plugins
    RUN chown -R www-data:www-data /var/www
    EXPOSE 80

    Je précise que l’accès au serveur mySQL se fait sans problème à la main. Néanmoins, et peu importe la configuration que j’écris, j’ai systématiquement ce message d’erreur à l’installation de la BDD :

    Fatal error : Uncaught TypeError : join() : Argument #2 ($array) must be of type ?array, bool given in /var/www/html/ecrire/inc/install.php:109
    Stack trace :
    #0 /var/www/html/ecrire/inc/install.php(109) : join(’’, false)
    #1 /opt/spip-cli/src/Command/CoreInstaller.php(128) : analyse_fichier_connection(’config/connect....’)
    #2 /opt/spip-cli/vendor/symfony/console/Command/Command.php(298) : Spip\Cli\Command\CoreInstaller->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #3 /opt/spip-cli/vendor/symfony/console/Application.php(1005) : Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #4 /opt/spip-cli/vendor/symfony/console/Application.php(299) : Symfony\Component\Console\Application->doRunCommand(Object(Spip\Cli\Command\CoreInstaller), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #5 /opt/spip-cli/vendor/symfony/console/Application.php(171) : Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #6 /opt/spip-cli/bin/spip(17) : Symfony\Component\Console\Application->run()
    #7 main
    thrown in /var/www/html/ecrire/inc/install.php on line 109

    -  > Quelle est mon erreur ?
    -  > Il est impossible de créer un compte sur le dépôt, est-ce volontaire ? J’aurais aimé faire une issue un peu mieux formatée et lisible.

    • je tente de reproduire le problème sur une installation en local (sans Docker) et je n’ai pas d’erreur avec la commande suivante pour l’installation de la BDD :

      spip core:installer --db-host "localhost" --db-login "root" --db-database "spip_test2" --admin-nom "cy_altern" --admin-pass 'spip' --admin-email "cy_altern@truc.tld" --db-server "mysql"

      à noter que la base « spip_test2 » existe déja
      Il serait utile que tu puisse vérifier ce que tu as comme fichiers .php générés dans le dossier config/

      A noter que pour l’installation, tant qu’a utiliser spip-cli, tu peux avantageusement remplacer

      # RÉCUPÉRATION DE SPIP
      RUN wget -O /var/www/html/spip.zip ${URL_PAQUET_SPIP}
      RUN unzip /var/www/html/spip.zip

      par

      cd /var/www/html
      spip dl 

      Pour le dernier point (créer un compte sur le repo de spip-cli) l’inscription se fait pour l’ensemble de la forge de SPIP : cf https://www.spip.net/fr_article825.html

    • J’ai ouvert un ticket là https://git.spip.net/spip/spip/issues/5168 pour une des parties du problème indiqué.

    • Merci cy_altern et Matthieu Marcillaud pour vos retours/aide. Je vous rejoins dès que possible sur le dépôt.

    • J’ai validé ton compte. Hésites pas à passer sur l’irc (ou discord) si tu as un souci pour t’y connecter.

    Répondre à ce message

  • 4

    Salut,

    suite à la mise à jour d’hier, j’essaie d’installer mes SPIP 3.2 et 3.1 avec SPIP-CLI mais je n’y arrive pas (je faisais sur le master jusqu’à présent).

    Lorsque je fais spip dl —branche spip-3.2 ou spip dl spip jeanmarie@git.spip.net -b spip-3.1, j’ai une erreur et je me retruove avec une 3.3 sans plugins-dist :

    git clone https://git.spip.net/spip/spip.git .
    Cloning into '.'...
    remote: Enumerating objects: 174755, done.
    remote: Counting objects: 100% (174755/174755), done.
    remote: Compressing objects: 100% (34273/34273), done.
    remote: Total 174755 (delta 143384), reused 168771 (delta 139924)
    Receiving objects: 100% (174755/174755), 45.18 MiB | 5.46 MiB/s, done.
    Resolving deltas: 100% (143384/143384), done.
    Fetching origin
    git checkout spip-3.2 && git pull --rebase
    error: pathspec 'spip-3.2' did not match any file(s) known to git
    • Bah oui, tu lis pas la liste ? La ré-organisation des tags et des plugins-dist n’a plus rien à voir. Marcimat a changé seulement checkout.php, pas spip-cli, et il l’a dit :

      Les outils checkout et spip-cli seront temporairement cassés et devront être mis à jour. J’essaierai de m’occuper de checkout.

      Donc faut tout mettre à jour là… pas le temps pour l’instant moi malheureusement

    • Si si, j’ai suivi :)

      J’ai vu qu’il avait mis à jour checkout et comme SPIP-CLI intègre checkout, j’ai fait le raccourci. Trop raccourci donc !

    • Plus précisément : spip-cli s’inspire de checkout, spip-cli a intégré le même type de téléchargement que checkout. Mais spip-cli n’intègre pas checkout tel quel, genre copier-coller, et quand checkout change, spip-cli change. C’est pas du tout le même code, juste inspiré de.

    • Ça marche, merci pour les précisions...

    Répondre à ce message

  • 2

    Salut,

    suite à une installation via core:installer (donc en git par défaut ?)

    spip core:installer --db-server "mysql" --db-login "root" --db-pass "" --db-database "spipcli"

    si j’essaye de à mettre à jour via core:mettreajour (avec ou sans branche)

    spip core:mettreajour --branche "trunk"

    mais j’ai le message d’erreur suivant :

    ’svn’ n’est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.

    Dans https://git.spip.net/spip-contrib-outils/spip-cli/src/branch/master/src/Command/CoreMettreajour.php#L46, les dépôt sont bien en SVN.

    Comment faire pour mettre à jour en git ?

    • core:installer c’est l’installation de la base, pas le télécharger

      la commande mettreajour… n’est plus à jour

      mais pour mettre à jour le code, c’est pareil que pour le premier téléchargement : toujours « dl » ou « core:telecharger », et si c’était pas sur un tag précis, ça mettra à jour

      il faudrait mettre à jour la commande mettreajour pour appeler « dl » derrière, et ensuite lancer les fonctions de mise à jour de base et des plugins (mais je ne sais plus si c’est possible en cli, à voir enfin c’était l’idée de cette commande en tout cas, qui devait pas juste faire du téléchargement, ce qui permettait de pas avoir à repasser dans l’admin et dans admin_plugin en web)

    • Oui, bien vu, je mélange core:telecharger et core:installer :)

      C’est bon avec dl et core:telecharger.

      Merci pour le retour rapide.

    Répondre à ce message

  • 5

    Bonjour,
    Je suis en train de tester Spip-cli en mutualisation et j’ai le soucis suivant :
    Quand je fais un spipmu « * » test:spip , j’obtiens systématiquement ceci pour tous les sites :

    <!DOCTYPE html>
    <html class='ltr fr no-js' xmlns='http://www.w3.org/1999/xhtml' lang='fr' dir='ltr'>
    <head>
    <title>Site en travaux</title>
    <meta name='viewport' content='width=device-width' />
    <link rel='stylesheet' href='prive/themes/spip/reset.css' type='text/css' />
    <link rel='stylesheet' href='prive/themes/spip/clear.css' type='text/css' />
    <link rel='stylesheet' href='prive/themes/spip/minipres.css' type='text/css' />
    </head>
    <body class='minipres'>
            <div id='minipres'>
            <h1>Site en travaux</h1>
            <div>
    Attention&#160;: un probl&#232;me technique (serveur SQL) emp&#234;che l&#8217;acc&#232;s &#224; cette partie du site. de votre compr&#233;hension.
            </div>
            </div>
    </body>
    </html>

    Quelqu’un aurait-il une idée d’où vient l’erreur ?
    Merci.

    • Je me réponds à moi-même.
      Je suis sur un Spip 3.0.24... Sur un Spip 3.2, ça fonctionne !

    • Bonjour,
      Bon, en fait, ça ne marche que sur mon serveur de test sous windows (wamp) en php > 5.6.
      Sur mon autre serveur, il y la conf suivante : php 5.6.5 apache 2.4.18 mysql 5.5.40
      L’erreur est toujours présente.
      Quelle est la conf mini au niveau php et mysql pour que spip-cli fonctionne ?
      Cordialement.

    • Je ne connais pas la mutualisation donc je ne sais pas répondre, mais à priori faut vraiment passer à PHP7. PHP5 y compris 5.6 n’est plus supporté depuis des années (pas même pour des bugs de sécu), donc c’est dangereux, et il faut le virer dès qu’on le peut.

    • Merci pour cette réponse rapide !

    • Bonjour,
      Toujours la même erreur malgré le passage à php 7 !
      Comme spip-cli n’est pas très bavard, je ne trouve pas la source du problème...
      Si quelqu’un a une idée, je suis preneur !
      Merci.

    Répondre à ce message

  • 1
    Emmanuel Courcelle

    Bonjour

    J’utilisais l’ancienne version de spip-cli dans une installation mutualisée. J’avais dû la patcher pour qu’elle soit utilisable. Je viens de tester la version 0.4 : un grand cru !!!

    Tous mes patches sont à mettre à la poubelle, spip-cli fait tout très bien maintenant (en tous cas tout ce dont j’ai besoin, c-à-d essentiellement exporter/importer les plugins activés).

    J’ai quand-même appliqué un tout petit patch : dans notre mutu (https://le-pic.org), nous acceptons que le même site ait deux url différents : exemple.fr et www.exemple.fr par exemple. Cela est implémenté en mettant le site dans le répertoire sites/exemple.fr et en faisant un lien symbolique : site/www.exemple.fr pointe sur sites/exemple.fr
    Avec cette configuration, spipmu voit deux sites : exemple.fr et www.exemple.fr, et fait donc l’action demandée une fois de trop. Ce n’est pas très élégant, et j’imagine que dans certains cas cela peut être dangereux. J’ai modifié une ligne afin de détecter et ignorer les liens symboliques :
    fichier spip-cli/src/Mutualisation/Command/Batch.php
    Ligne : 127
    remplacer if ($dir->isDir())
    par if ($dir->isDir() && !$dir->isLink())

    Merci pour ce super-outil et amitiés à tous les spipeurs !
    Emmanuel

    Répondre à ce message

  • 5

    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.

    • Salut,

      j’ai le même message pour une installation en mySQL (pas de problème en sqlite) :

      [Symfony\Component\Console\Exception\RuntimeException]
      The "-d" option does not exist

      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 !

    Répondre à ce message

  • 1

    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.

    Répondre à ce message

  • 5

    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 ?

    • 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))

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

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