Merci julm pour ton retour sur la documentation et ton aide pour le projet en général!
Avec plaisir, c’est vraiment pas grand chose, surtout comparé au travail que vous avez abattu pour faire ce nouveau gargantext.
Le rapprochement avec Hackage et la Haskell Foundation est en cours, nous stabilisons le projet encore et c’est pour bientôt.
Oh ! Intéressant 
Avertissement : la suite du message est surtout pour les geeks Haskell
Le reste de ce (trop long) message est probablement aussi trop technique (entendre : ça cause Haskell) pour le Discourse, je le pose ici tout de même car je n’ai pas de meilleur endroit (le Gitlab de l’ISC-PIF n’est pas ouvert au public).
Lien vers la documentation Haddock de chaque version
Mais je n’ai pas eu le temps de voir comment faire pour forcer le lien de la doc générée par haddock et servir cette partie via l’instance de prod
[…]
Je propose donc que chaque instance en production pour ses utilisateurs génère sa propre version de la documentation
Hmm, si je comprends bien ta proposition, pour la partie Haskell (je ne sais pas pour Purescript) il devrait être possible de faire cela en utilisant le champ version
(voire aussi homepage
) renseigné dans gargantext.cabal
et accessible dans PackageInfo_pkgname (un module autogénéré tout comme le Paths_pkgname
déjà utilisé par haskell-gargantext
).
Exemple à la va-vite pour être clair (mais pas testé) :
import qualified PackageInfo_gargantext as PackageInfo
docBaseUrl = PackageInfo.homepage <> "/haskell-package"
docUrl = docBaseUrl <> "/gargantext-" <> show PackageInfo.version
Le frontend devrait ainsi pouvoir recevoir du serveur cette URL docUrl
qui lui correspond précisément.
Par défaut ce serait donc vers https://gargantext.org/haskell-package/...
.
Mais se pourrait être vers https://mon-fork-de-gargantext.org/haskell-package
pour un fork de haskell-gargantext
, qui n’aurait qu’à (et probablement devrait) modifier le champ homepage
du gargantext.cabal
pour cela.
Du reste https://gargantext.org/haskell-package/*
pourrait à terme n’être qu’une redirection HTTP(s) vers https://hackage.haskell.org/package/*
.
Même approche pour le reste de la documentation
Si la documentation à la Diátaxis est incorporée à haskell-gargantext.git
, la même approche de générer et publier cette documentation (depuis des fichiers Markdown ou quoi) à chaque version, puis de pointer vers la version correspondante, pourrait également fonctionner.
Remarque : L’occupation mémoire d’une telle approche est négligeable au vu des capacités de stockage actuelle, au pire si ça devient un sujet un jour, genre dans 1000 ans, il sera toujours possible d’utiliser sur le serveur un système de fichiers gérant de manière transparente la compression, voire la dé-duplication (comme ZFS).
Lien vers la documentation de chaque commit
Par contre, pour inclure le commit git
précis dans l’URL, ça se complique, car lorsque le build est fait “out-of-tree” (comme avec nix
ou cabal v2-install
) alors les méta-données de git
ne sont plus accessibles ; et donc passer par du TemplateHaskell
pour lancer des commandes git
comme le font gitrev ou githash ne marcherait plus.
Ce n’est très probablement pas utile de générer la documentation Haddock ou Markdown pour chaque commit (à chaque version
comme précédemment c’est déjà top), mais c’est toujours intéressant d’afficher à l’utilisateur·rice final·le le commit Git afin d’identifier très précisément le code utilisé dans les rapports de problèmes.
Avec flake.nix
Avec l’approche par flake.nix
que j’ai explorée précédemment, une piste (que je n’ai pas encore essayée) serait d’écrire (genre lors de la patchPhase
), la valeur de self.rev
dans un fichier genre meta/version
, listé dans le champ data-files:
de gargantext.cabal
, puis de le récupérer avec Paths_gargantext.getDataFileName "meta/version"
.
À noter qu’en plus de la rev
(ision) (ici le commit Git), le flake.nix
permet d’avoir les médadonnées suivantes : lastModified
, lastModifiedDate
, narHash
, outPath
(probablement la plus importante après rev
), revCount
, shortRev
, submodules
.