[spip-cli-custom ↪ pr-spip-cli-plugins-telecharger] 10 commits

technova69/spip-cli-custom | 10 commits

Par gilles, le 21 août 2026 à 12h00min :

fix(plugins:svp:telecharger): sélection du plugin, autorisation et remontée des erreurs

Trois corrections dans spip plugins:svp:telecharger, indépendantes mais
toutes nécessaires pour que la commande télécharge réellement un plugin.

  1. Le plugin n’était jamais trouvé dans le dépôt.
    La condition SQL comparait UPPER(pl.prefixe) à LOWER("PREFIXE") :
    les deux termes ne peuvent jamais être égaux pour un préfixe non vide, la
    commande répondait donc systématiquement « Le plugin xxx n’est pas
    référencé ». On compare désormais UPPER(pl.prefixe) à UPPER("prefixe").

  2. L’exception d’autorisation n’était pas prise en compte.
    autoriser() normalise le type « _plugins » en « plugins »
    (autoriser_type() retire l’underscore), puis transmet ce type déjà
    normalisé à autoriser_exception(), qui le normalise une seconde fois :
    « plugins » ne commençant plus par un underscore, il passe cette fois par
    objet_type() et devient « plugin » au singulier.
    La vérification portait donc sur la clé « plugin » alors que l’exception
    n’était enregistrée que sous « plugins », et action/teleporter.php
    refusait le téléchargement. Les deux formes sont maintenant déclarées :
    autoriser_dist() teste d’abord la présence de la clé « plugins » dans
    $GLOBALS['autoriser_exception'], puis délègue la vérification effective à
    autoriser_exception(), qui, elle, lit la clé « plugin ».
    Vérifié sur SPIP 4.4.14 : aucune des deux déclarations prise isolément ne
    suffit.

  3. La commande annonçait une réussite même en cas d’échec.
    one_action() renvoie la description de l’action avant son exécution ;
    son résultat est placé par do_action() dans la dernière entrée de
    $actionneur->done. On teste désormais ce résultat, et on affiche les
    messages empilés dans $actionneur->err lorsque l’action a échoué.

Testé avec SPIP 4.4.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

Modifié
src/Command/PluginsSvpTelecharger.php

Détails : fix(plugins:svp:telecharger): sélection du plugin, autorisation et remontée des erreurs (f5ed7509) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

fix(synchro:bdd): pas de métacaractère shell dans la partie distante

Sous Windows php passe par cmd.exe, qui ignore les guillemets simples et
interprète lui-même && et | : ils étaient interprétés en local au lieu
d’atteindre le serveur.
On abandonne aussi gzip/gunzip pour utiliser le paramètre -C de ssh.

Modifié
README.md
src/Command/SynchroBdd.php

Détails : fix(synchro:bdd): pas de métacaractère shell dans la partie distante (e9043b84) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

doc: corrections mineures

Modifié
README.md

Détails : doc: corrections mineures (22140e12) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

style(synchro:bdd): aérer la sortie verbeuse (lisibilité)

Modifié
src/Command/SynchroBdd.php

Détails : style(synchro:bdd): aérer la sortie verbeuse (lisibilité) (e91c71db) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

style(synchro:bdd): rendre la sortie de la commande lisible

Messages sur une ligne via les helpers check/fail/care de SpipCliStyle au lieu
des blocs Symfony, et lignes vides autour des passthru pour isoler ce que mysql
écrit sur stderr.

Le dump des metas devient arborescent : indentation par profondeur, clés réelles
des sous-tableaux là où un compteur les numérotait, nœuds entre crochets pour les
distinguer des feuilles, séparateur unique porté par la constante SEPARATEUR.
Les valeurs non textuelles sont explicitées, un false ne s’affiche plus comme
une chaîne vide.

Le niveau de compression était annoncé « gzip -1 », lisible comme une négation.

Modifié
src/Command/SynchroBdd.php

Détails : style(synchro:bdd): rendre la sortie de la commande lisible (0f00347a) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

feat(synchro:bdd): demander le mot de passe mysql distant à l’invite

Une invite avec saisie masquée quand config_mysql_serveur.pwd est vide, réutilisée pour le SHOW TABLES et les dumps : plus besoin d’écrire le mot de passe de production en dur dans le json.
Le mot de passe est également masqué dans la sortie (commandes affichées).

Modifié
README.md
src/Command/SynchroBdd.php

Détails : feat(synchro:bdd): demander le mot de passe mysql distant à l'invite (5892d80e) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

fix(synchro:bdd): ajouter --no-tablespaces aux mysqldump

Sans le privilège PROCESS, qu’un compte applicatif a rarement, mysqldump pollue la sortie avec des warnings en interrogeant les tablespaces généraux, qui ne sont pas concernés par un dump.

Modifié
src/Command/SynchroBdd.php

Détails : fix(synchro:bdd): ajouter --no-tablespaces aux mysqldump (19fca6dd) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

feat(synchro:bdd): compresser le flux de synchro

gzip côté distant, gunzip côté local.
Activable par la clé compression du json (true|false) ou par l’option -c (–compress)

Modifié
README.md
src/Command/SynchroBdd.php
src/Command/SynchroInit.php

Détails : feat(synchro:bdd): compresser le flux de synchro (77214d82) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par nicod_, le 17 août 2026 à 09h42min :

feat(synchro:bdd): option pour ne pas rapatrier les données de certaines tables

Section dump du json : tables_sans_donnees (recréées vides en local) et
tables_ignorees (laissées intactes), jokers * et ? admis
Option -t (–tout) pour rapatrier quand même la base complète.

Modifié
README.md
src/Command/SynchroBdd.php
src/Command/SynchroInit.php

Détails : feat(synchro:bdd): option pour ne pas rapatrier les données de certaines tables (822d2719) · Validations · Gilles Vincent / spip-cli-custom · GitLab

==============================
Par Cerdic, le 12 août 2026 à 10h51min :

fix: si pas de meta version_installee déclencher un upgrade de base + lancer un sql:repair après pour être certain que la base est bien réparée

Modifié
src/Command/CoreMajBdd.php

Détails : fix: si pas de meta version_installee déclencher un upgrade de base + lancer... (220711a6) · Validations · Gilles Vincent / spip-cli-custom · GitLab