Re: Proposition pour la génération de archivelist

Matthieu Marcillaud <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <[email protected]>
Hello,

 > J'ai donc produit une v2 du cahier des charges suite aux différentes
 > remarques.
 >
 > 
https://git.spip.net/spip-contrib-outils/archives_from_gitea/src/branch/master/README.md 


Alors, moi je ne partage pas entièrement ce cahier des charges déjà

- ça serait bien de s’approcher de ce que font Packagist ou Satis : tu 
donnes l’URL du dépot GIT, il se débrouille avec ça pour créer la liste 
des paquets / versions possibles, stocke les zips des tags, permet de 
récupérer quand même les branches à jour (@dev-master) si besoin, etc...

- ça limite à Gitea, alors que d’autres projets peuvent être ailleurs, 
de façon temporaire ou non. Et je trouve ça assez dommage de s’en priver 
; non ?


## Satis

J’avais commencé à regarder / détourner Satis

Satis sert à générer des dépots Composer, c’est à dire un fichier .json 
(enfin plusieurs, mais bref) un peu comme notre 
https://plugins.spip.net/depots/principal.xml qui liste des paquets et 
leurs versions, avec les chemins pour les télécharger.

Si on va réellement vers l’idée d’utiliser Composer à terme, tout en 
restant sur git.spip.net (donc pas Packagist.org directement), il faudra 
faire générer un dépot Composer adéquat, il faudra utiliser Satis, ou un 
packagist à nous, ou réécrire la roue...

Si on arrivait à avoir un outil, pour notre problème actuel, qui 
s’appuie sur Satis, avec à peu près la même configuration, la transition 
serait peut être plus simple (une fois que SPIP utilise Composer, on 
bascule sur Satis sans surcharge...). À vrai dire j’y crois moyennement 
car ça va hurler (pas de traduction, pas de logo dans les composer.json 
...) ; mais c’était l’idée.


### Fonctionnement Satis

À Satis, on lui donne une liste de dépots git (github, gitlab) (il ne 
sait pas bien faire avec Gitea par défaut), il les analyse en cherchant 
leurs fichiers composer.json dans chaque branche / tag et s’il en trouve 
décrit alors le paquet, et si c’est un tag, télécharge ou crée le zip 
localement (selon les possibilités du driver (github, gitlab, ...) / api 
utilisée)

Bref, Satis :
- ne fonctionne qu’avec des fichiers composer.json.
- collecte localement les zips des tags (mais pas des branches)

### Détournement Satis

Ce que j’ai commencé, début janvier (puis j’ai fait d’autres choses donc 
c’est stand by) c’est un outil qui s’appuie sur Satis (qui lui même 
s’appuie sur Composer), mais qui surcharge certains de ses comportements.

1) j’ai ajouté un driver Gitea (partiel) ; au moins il sait récupérer 
des fichiers et des zip en passant par son API

2) je «fake» un fichier composer.json virtuel s’il n’en existe pas dans 
la branche / tag ... Actuellement c’est très rudimentaire, mais l’idée 
était d’analyser paquet.xml / plugin.xml / lang/ pour obtenir quelques 
infos en plus)

Avec cela déjà ça stocke localement les zips des tags des dépots 
concernés. (et ça crée le fichier de dépot composer, totalement inutile 
pour nous).

C’est là où j’en étais.

Mon idée était donc pour continuer :

- d’analyser paquet.xml (etc.) pour améliorer le faux composer.json
- d’ajouter un export «principal.xml» qui génèrerait l’équivalent, si 
c’est possible, de ce qu’on avait auparavant.

Mais déjà dans mes tests, j’ai vu quelques problèmes :


- Satis fait appel aux APIs des drivers pour obtenir le fichier 
composer.json de chaque tag (déjà c’était long), mais s’il le trouve 
pas, il va falloir analyser paquet.xml, plugin.xml, lang/ ce qui va 
faire beaucoup d’appels et risque d’être encore plus long. Composer (et 
consœurs) ne s’appuient que sur 1 seul fichier, c’est peut être pas pour 
rien.

- Pour dire à Satis de ne réanalyser que "spip/medias" par exemple, ça 
sous-entend que :
-- soit on a déclaré en amont "spip/medias" dans la liste des dépots git 
à traiter (donc son "name" en plus de l’url de GIT),
-- soit Satis doit analyser l’ensemble des dépots listés (via leurs 
composer.json) pour déterminer lesquels ont "spip/medias" dedans ce qui 
est aussi très long.

Du coup, il semble judicieux de déclarer systématiquement la déclaration 
"name" en plus de l’url, ce qui ressemble à :

         {
             "type": "vcs",
             "name": "spip/medias",
             "url": "https://git.spip.net/spip/medias"
         },

Et on ne peut pas alors déclarer 2 fois le même "name".

Voilà, j’étais là… puis j’avais regardé la tête d’un fichier d’un dépot 
xml chez SPIP, et vu des balises `<autorisations>`… je m’étais demandé 
pourquoi parbleu ces trucs étaient dedans alors que ça sert nul part… et…

Puis je suis allé faire de la musique…

MM.
_______________________________________________
liste: https://listes.rezo.net/mailman/listinfo/spip-dev
doc: https://www.spip.net/
dev: https://core.spip.net/
irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.