Remplace l'URL du depot par un placeholder, et dit quoi changer avant de publier
Sortie du projet. Le README ouvre desormais sur une section « A faire avant de publier ce projet quelque part » : ce que commande la ligne unique de publier.sh, ce qui reste a changer a la main, et ce qu'il ne faut surtout PAS changer a la main (amd64.url, reecrite a chaque publication). ⚠ Le remplacement de fichiers ne regle pas l'historique git, qui porte ces URL dans chaque ancien commit. Seul un depot neuf sans historique en vient a bout. Restent volontairement : maintainers, l'adresse de contact et le site de l'auteur dans /a-propos — l'AGPL attend qu'on puisse joindre la source, donc l'auteur. 626 tests au vert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2374,6 +2374,36 @@ référencés mais qui partaient dans chaque release. L'archive passe de **69 à
|
||||
l'écart est bien moindre que sur disque (8,4 Mo), les *source maps* étant du texte qui se
|
||||
compresse très bien. **Toujours mesurer sur l'archive, jamais sur le disque.**
|
||||
|
||||
## Les URL de dépôt sont un placeholder — sortie du projet (2026-08-22)
|
||||
|
||||
`https://forge.example.org/mabibli` remplace partout l'URL du Gitea privé de l'utilisateur.
|
||||
`example.org` est réservé à la documentation par la **RFC 2606** : le placeholder est donc
|
||||
définitivement injoignable, ce qui est exactement ce qu'on veut d'un placeholder.
|
||||
|
||||
⚠️ **Une seule ligne commande tout** : `depot_code`, en tête de `build/publier.sh`. Les URL
|
||||
de release, d'archive et le message de fin en dérivent. `--depot-code URL` fait la même
|
||||
chose sans modifier le fichier.
|
||||
|
||||
⚠️ **`publier.sh` REFUSE de publier tant que le placeholder est en place**, et il refuse
|
||||
**avant de compiler**, comme ses autres garde-fous. Sans lui, on écrirait dans
|
||||
`manifest.toml` une `amd64.url` que personne ne peut télécharger — et l'échec surviendrait
|
||||
**bien plus loin**, à l'installation, sous la forme d'un `ynh_setup_source` en erreur, sans
|
||||
rapport apparent avec la cause. C'est la même famille de panne que le manifeste corrigé mais
|
||||
non poussé : un défaut posé ici, constaté ailleurs.
|
||||
|
||||
⚠️ **Ce que le remplacement de fichiers ne règle PAS** : l'**historique git** porte ces URL
|
||||
dans chaque ancien commit, et le dépôt du paquet contient en plus une archive de 68 Mo
|
||||
committée par erreur à la 0.1.0 puis retirée. Seul un dépôt **neuf, sans historique**, en
|
||||
vient à bout — c'est ce qui a été décidé pour la sortie.
|
||||
|
||||
⚠️ **`amd64.url` ne se change pas à la main** : `publier.sh` la réécrit à chaque
|
||||
publication. La corriger donnerait l'illusion que c'est fait.
|
||||
|
||||
Ce qui **reste** volontairement : `maintainers = ["mathieu"]` (c'est le champ prévu par le
|
||||
format v2), l'adresse de contact et le site de l'auteur dans `/a-propos` (décidé au lot Y —
|
||||
l'AGPL attend d'ailleurs qu'on puisse joindre la source, donc l'auteur), et `"mathieu"`
|
||||
comme nom de lecteur dans les jeux de test.
|
||||
|
||||
## Historique du projet (pourquoi ces choix)
|
||||
|
||||
L'utilisateur a testé deux solutions existantes avant de se lancer dans un projet custom :
|
||||
@@ -2692,8 +2722,8 @@ Vérifié en exécution, styles calculés à l'appui : à 375 px, menu déployé
|
||||
Relevé dans la console de l'application installée, le 2026-08-20 :
|
||||
|
||||
```
|
||||
Access to manifest at 'https://akbar.nohost.me/yunohost/sso?r=…'
|
||||
(redirected from 'https://mabibli.akbar.nohost.me/manifest.webmanifest')
|
||||
Access to manifest at 'https://exemple.tld/yunohost/sso?r=…'
|
||||
(redirected from 'https://mabibli.exemple.tld/manifest.webmanifest')
|
||||
blocked by CORS policy: No 'Access-Control-Allow-Origin' header
|
||||
```
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
private const string Site = "https://www.limonier.be";
|
||||
|
||||
/// <summary>Dépôt du code — ce que l'AGPL attend qu'on rende accessible.</summary>
|
||||
private const string Depot = "https://git.akbar.nohost.me/mathieu/mabibli";
|
||||
private const string Depot = "https://forge.example.org/mabibli";
|
||||
|
||||
private VersionApplication? _version;
|
||||
|
||||
|
||||
@@ -15,6 +15,42 @@ des décisions à destination de Claude Code, et `IDEES.md`, les pistes **non ac
|
||||
| [Publication](#publication) | sortir une version, en une commande |
|
||||
| [Mettre en production](#mettre-en-production) | installer, mettre à jour, revenir en arrière, désinstaller |
|
||||
|
||||
## ⚠️ À faire avant de publier ce projet quelque part
|
||||
|
||||
Les URL de dépôt sont un **placeholder volontaire**, `https://forge.example.org/mabibli`
|
||||
(le domaine `example.org` est réservé à la documentation par la RFC 2606, donc
|
||||
définitivement injoignable). Rien ne fonctionnera tant qu'il n'est pas remplacé.
|
||||
|
||||
**Une seule ligne commande tout le reste** — `depot_code`, en tête de
|
||||
`mabibli_ynh/build/publier.sh`. Elle produit les URL de release, celles d'archive, et le
|
||||
message de fin. Pour un essai ponctuel, `--depot-code https://…` fait la même chose sans
|
||||
modifier le fichier.
|
||||
|
||||
⚠️ **`publier.sh` refuse de publier tant que le placeholder est en place**, et il refuse
|
||||
*avant* de compiler. C'est délibéré : publier avec une URL morte écrirait dans
|
||||
`manifest.toml` une `amd64.url` que personne ne peut télécharger, et l'échec surviendrait
|
||||
bien plus tard, à l'installation, sous la forme d'un `ynh_setup_source` en erreur — sans
|
||||
rapport apparent avec la cause.
|
||||
|
||||
Restent à changer à la main, une fois seulement :
|
||||
|
||||
| Fichier | Quoi |
|
||||
|---|---|
|
||||
| `mabibli_ynh/manifest.toml` | `code = "…"`, et `maintainers` |
|
||||
| `mabibli_ynh/conf/systemd.service` | `Documentation=…` |
|
||||
| `mabibli_ynh/doc/ADMIN.md` | le lien de bas de page |
|
||||
| `mabibli_ynh/README.md`, ce fichier | les liens et les commandes d'exemple |
|
||||
| `MaBibli.Client/Pages/APropos.razor` | `Depot`, `Site`, et l'adresse de contact |
|
||||
|
||||
⚠️ **`amd64.url` dans le manifeste n'est PAS à changer à la main** : `publier.sh` la
|
||||
réécrit à chaque publication. La corriger donnerait l'illusion que c'est fait alors que la
|
||||
source du problème est ailleurs.
|
||||
|
||||
⚠️ **Le dépôt du code doit être PUBLIC.** `ynh_setup_source` télécharge sans jeton, et
|
||||
Gitea comme GitHub répondent **404** — pas 403 — à un anonyme sur un dépôt privé. Le
|
||||
symptôme est alors rigoureusement identique à « la release n'existe pas ». Contrôle qui
|
||||
tranche, hors session authentifiée : `curl -fsSLI "<url de l'archive>"`.
|
||||
|
||||
## Demande initiale
|
||||
|
||||
Gérer une bibliothèque personnelle (livres physiques et numériques), avec :
|
||||
@@ -81,7 +117,7 @@ complet à une machine qui n'en a pas besoin, pour une compilation lente. Voir
|
||||
|
||||
## Le paquet YunoHost
|
||||
|
||||
MaBibli se déploie via un **second dépôt**, [`mabibli_ynh`](https://git.akbar.nohost.me/mathieu/mabibli_ynh),
|
||||
MaBibli se déploie via un **second dépôt**, [`mabibli_ynh`](https://forge.example.org/mabibli_ynh),
|
||||
qui **ne contient aucun code C#** : il porte le manifeste, les configurations nginx et
|
||||
systemd, et les scripts d'installation. Toute la documentation, elle, vit ici — ce
|
||||
fichier est le point d'entrée unique du projet.
|
||||
@@ -261,7 +297,7 @@ Vérification, à faire **sans être authentifié** (autre navigateur, ou `curl`
|
||||
ci-dessous) :
|
||||
|
||||
```bash
|
||||
curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1
|
||||
curl -fsSLI "https://forge.example.org/mabibli/releases/download/v0.1.0/mabibli-0.1.0-linux-x64.tar.gz" | head -1
|
||||
```
|
||||
|
||||
Attendu : `HTTP/2 200`. Un 404 signifie soit que la release n'est pas déposée, soit que
|
||||
@@ -283,13 +319,13 @@ Le contrôle qui tranche, quel que soit le chemin suivi — c'est le manifeste *
|
||||
serveur le lira** :
|
||||
|
||||
```bash
|
||||
curl -fsSL "https://git.akbar.nohost.me/mathieu/mabibli_ynh/raw/branch/main/manifest.toml" | grep amd64
|
||||
curl -fsSL "https://forge.example.org/mabibli_ynh/raw/branch/main/manifest.toml" | grep amd64
|
||||
```
|
||||
|
||||
#### A.5 Installer
|
||||
|
||||
```bash
|
||||
sudo yunohost app install https://git.akbar.nohost.me/mathieu/mabibli_ynh --debug
|
||||
sudo yunohost app install https://forge.example.org/mabibli_ynh --debug
|
||||
```
|
||||
|
||||
YunoHost demande le domaine (celui créé en A.1) et le groupe autorisé (`all_users`).
|
||||
@@ -385,7 +421,7 @@ Créer la release `v0.1.1` dans Gitea, y téléverser
|
||||
`build/dist/mabibli-0.1.1-linux-x64.tar.gz`, puis vérifier sans authentification :
|
||||
|
||||
```bash
|
||||
curl -fsSLI "https://git.akbar.nohost.me/mathieu/mabibli/releases/download/v0.1.1/mabibli-0.1.1-linux-x64.tar.gz" | head -1
|
||||
curl -fsSLI "https://forge.example.org/mabibli/releases/download/v0.1.1/mabibli-0.1.1-linux-x64.tar.gz" | head -1
|
||||
```
|
||||
|
||||
#### B.5 Pousser le paquet
|
||||
@@ -406,7 +442,7 @@ sudo yunohost backup create --apps mabibli
|
||||
```
|
||||
|
||||
```bash
|
||||
sudo yunohost app upgrade mabibli -u https://git.akbar.nohost.me/mathieu/mabibli_ynh --debug
|
||||
sudo yunohost app upgrade mabibli -u https://forge.example.org/mabibli_ynh --debug
|
||||
```
|
||||
|
||||
⚠️ **L'option `-u` n'est pas facultative ici.** MaBibli n'est pas dans le catalogue
|
||||
|
||||
Reference in New Issue
Block a user