Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/traduire/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ minimisent la difficulté pour le lecteur.
## Frontmatter

- `slug` : le chemin d'URL anglais. Il doit commencer par le `slug` du
`_dir.yml` du dossier parent, privé de son suffixe `/_dir`.
`.navigation.yml` du dossier parent, privé de son suffixe `/.navigation`.
- `sourceHash` : le SHA-256 du fichier français traduit. L'obtenir par
`node scripts/content-hash.mjs docs/fr/<chemin>`.
- `sourceCommit` : le SHA du commit courant (`git rev-parse HEAD`).
Expand Down
2 changes: 2 additions & 0 deletions docs/en/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /.navigation
title: Docs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /utilities/_dir
slug: /utilities/.navigation
title: Utilities
description: The everyday commands and tools for you and your members.
navigation.icon: 'twemoji:toolbox'
2 changes: 2 additions & 0 deletions docs/en/11.misc/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /misc/.navigation
title: Misc
2 changes: 0 additions & 2 deletions docs/en/11.misc/_dir.yml

This file was deleted.

2 changes: 2 additions & 0 deletions docs/en/12.appendices/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /appendices/.navigation
title: Appendices
12 changes: 6 additions & 6 deletions docs/en/12.appendices/1.contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ navigation.icon: material-symbols:edit-document-outline
redactors: ['draftproducts', 'rababio4579', 'theorik']
contributors: ['clement669', 'iibey', 'imroxxor', 'kazotka']
noindex: true
sourceHash: f75190186d7785af3c9c385509a4db096a702253a4b33ab9ddfaddac056173a8
sourceHash: 95bb7a16ca46a26ae17bfd23b0b10e09666f00da4ddd86d2e85fa689c2ceb7eb
sourceCommit: 3776da3855c1e37b0dd4e1e94ee9dc61ae4bde08
---

Expand Down Expand Up @@ -254,13 +254,13 @@ slug: /engagement/levels
```

The `slug` is the full path, without the `/docs/en` prefix. It has to
start with the `slug` of the `_dir.yml` file of its folder, minus its
`/_dir` suffix.
start with the `slug` of the `.navigation.yml` file of its folder, minus its
`/.navigation` suffix.

`_dir.yml` files carry one too, ending in `/_dir`:
`.navigation.yml` files carry one too, ending in `/.navigation`:

```yaml
slug: /engagement/_dir
slug: /engagement/.navigation
title: Engagement
```

Expand Down Expand Up @@ -305,7 +305,7 @@ translate: false
It then drops out of the list of pages to translate. This is the case of the
changelog, which stays in French.

This key does not propagate: putting it in a `_dir.yml` only excludes that
This key does not propagate: putting it in a `.navigation.yml` only excludes that
file, not the pages of the folder. Every page to exclude has to carry it.

## Structuring tools
Expand Down
2 changes: 0 additions & 2 deletions docs/en/12.appendices/_dir.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /member-welcome/_dir
slug: /member-welcome/.navigation
title: Member welcome
description: Everything that supports a member from the moment they join your server to their first steps.
navigation.icon: 'twemoji:waving-hand'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /engagement/_dir
slug: /engagement/.navigation
title: Engagement
description: The systems that make your members want to be active and take part in the server's life.
navigation.icon: 'twemoji:chart-increasing'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /security/_dir
slug: /security/.navigation
title: Security
description: Moderation, protecting your server and keeping track of what happens on it.
navigation.icon: 'twemoji:shield'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /communication/_dir
slug: /communication/.navigation
title: Communication
description: The staff's tools to talk with the community and keep it informed.
navigation.icon: 'twemoji:megaphone'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /community/_dir
slug: /community/.navigation
title: Community
description: The spaces where your members talk to each other, and the tools that keep them alive.
navigation.icon: 'twemoji:busts-in-silhouette'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /games-and-events/_dir
slug: /games-and-events/.navigation
title: Games & events
description: The games, activities and events DraftBot brings to your server.
navigation.icon: 'twemoji:game-die'
2 changes: 0 additions & 2 deletions docs/en/_dir.yml

This file was deleted.

2 changes: 2 additions & 0 deletions docs/fr/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /.navigation
title: Docs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /utilitaires/_dir
slug: /utilitaires/.navigation
title: Utilitaires
description: Les commandes et outils du quotidien pour vous et vos membres.
navigation.icon: 'twemoji:toolbox'
2 changes: 2 additions & 0 deletions docs/fr/11.misc/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /autres/.navigation
title: Autres
2 changes: 0 additions & 2 deletions docs/fr/11.misc/_dir.yml

This file was deleted.

2 changes: 2 additions & 0 deletions docs/fr/12.appendices/.navigation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
slug: /annexes/.navigation
title: Annexes
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /annexes/changelog/_dir
slug: /annexes/changelog/.navigation
title: Mises à jour
navigation.icon: "material-symbols:article-outline"
description: Liste de tous les changements effectués, datés et décris depuis fin 2019.
Expand Down
10 changes: 5 additions & 5 deletions docs/fr/12.appendices/1.contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,13 +253,13 @@ slug: /engagement/niveaux
```

Le `slug` est le chemin complet, sans le préfixe `/docs/fr`. Il doit
commencer par le `slug` du fichier `_dir.yml` de son dossier, privé de son
suffixe `/_dir`.
commencer par le `slug` du fichier `.navigation.yml` de son dossier, privé de son
suffixe `/.navigation`.

Les fichiers `_dir.yml` en portent un aussi, terminé par `/_dir` :
Les fichiers `.navigation.yml` en portent un aussi, terminé par `/.navigation` :

```yaml
slug: /engagement/_dir
slug: /engagement/.navigation
title: Engagement
```

Expand Down Expand Up @@ -304,7 +304,7 @@ translate: false
Elle sort alors de la liste des pages à traduire. C'est le cas du changelog,
qui reste en français.

Cette clé ne se propage pas : la poser dans un `_dir.yml` n'exclut que ce
Cette clé ne se propage pas : la poser dans un `.navigation.yml` n'exclut que ce
fichier, pas les pages du dossier. Chaque page à exclure doit la porter.

## Outils de structuration
Expand Down
2 changes: 0 additions & 2 deletions docs/fr/12.appendices/_dir.yml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /accueil-des-membres/_dir
slug: /accueil-des-membres/.navigation
title: Accueil des membres
description: Tout ce qui accompagne un membre de son arrivée sur le serveur à ses premiers pas.
navigation.icon: 'twemoji:waving-hand'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /engagement/_dir
slug: /engagement/.navigation
title: Engagement
description: Les systèmes qui donnent envie à vos membres d'être actifs et de participer à la vie du serveur.
navigation.icon: 'twemoji:chart-increasing'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /securite/_dir
slug: /securite/.navigation
title: Sécurité
description: La modération, la protection de votre serveur et le suivi de ce qu'il s'y passe.
navigation.icon: 'twemoji:shield'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /communication/_dir
slug: /communication/.navigation
title: Communication
description: Les outils du staff pour échanger avec la communauté et la tenir informée.
navigation.icon: 'twemoji:megaphone'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /communaute/_dir
slug: /communaute/.navigation
title: Communauté
description: Les espaces d'échange entre vos membres et les outils pour les faire vivre.
navigation.icon: 'twemoji:busts-in-silhouette'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
slug: /jeux-et-evenements/_dir
slug: /jeux-et-evenements/.navigation
title: Jeux & événements
description: Les jeux, animations et événements que DraftBot fait vivre sur votre serveur.
navigation.icon: 'twemoji:game-die'
2 changes: 0 additions & 2 deletions docs/fr/_dir.yml

This file was deleted.

10 changes: 5 additions & 5 deletions scripts/lib/pages.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ export async function findIssues(docsDir) {

const dirSlugs = new Map()
for (const page of [...source, ...target]) {
if (page.relPath.endsWith('_dir.yml') && page.data.slug) {
dirSlugs.set(dirname(page.absPath), page.data.slug.replace(/\/_dir$/, ''))
if (page.relPath.endsWith('.navigation.yml') && page.data.slug) {
dirSlugs.set(dirname(page.absPath), page.data.slug.replace(/\/\.navigation$/, ''))
}
}

Expand All @@ -81,7 +81,7 @@ export async function findIssues(docsDir) {
continue
}
const parentSlug = dirSlugs.get(dirname(page.absPath))
// Le _dir.yml racine a pour slug "/_dir", donc un parentSlug vide : la
// Le .navigation.yml racine a pour slug "/.navigation", donc un parentSlug vide : la
// comparaison se reduit alors au "/" initial, qu'un slug racine malforme
// n'a pas. Tester la presence de la cle et non sa verite, sinon ce cas
// sort de la verification.
Expand All @@ -102,9 +102,9 @@ export async function findIssues(docsDir) {
}

for (const page of source) {
if (page.relPath.endsWith('_dir.yml')) continue
if (page.relPath.endsWith('.navigation.yml')) continue
// Le frontmatter est parse en chaines : `translate: false` arrive en "false".
// Un _dir.yml qui la porte ne couvre que lui-meme, aucune cascade n'existe
// Un .navigation.yml qui la porte ne couvre que lui-meme, aucune cascade n'existe
// ici : la cle doit etre posee sur chaque page a exclure.
if (page.data.translate?.trim() === 'false') continue
const translated = byRelPath.get(page.relPath)
Expand Down
16 changes: 8 additions & 8 deletions scripts/lib/pages.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ test('slugFromPath retire les prefixes numeriques et l extension', () => {
assert.equal(slugFromPath('0.home.md'), '/home')
})

test('slugFromPath conserve le suffixe _dir', () => {
assert.equal(slugFromPath('3.engagement/_dir.yml'), '/engagement/_dir')
assert.equal(slugFromPath('_dir.yml'), '/_dir')
test('slugFromPath conserve le suffixe .navigation', () => {
assert.equal(slugFromPath('3.engagement/.navigation.yml'), '/engagement/.navigation')
assert.equal(slugFromPath('.navigation.yml'), '/.navigation')
})

async function fixture() {
Expand Down Expand Up @@ -68,7 +68,7 @@ test('findIssues ne signale rien quand la traduction est a jour', async () => {

test('findIssues signale un slug incoherent avec son dossier parent', async () => {
const dir = await fixture()
await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntitle: Engagement\n')
await writeFile(join(dir, 'fr/3.engagement/.navigation.yml'), 'slug: /engagement/.navigation\ntitle: Engagement\n')
await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /autre/niveaux\n---\nFR\n')
const issues = await findIssues(dir)
assert.equal(issues.slugErrors.length, 1)
Expand All @@ -77,7 +77,7 @@ test('findIssues signale un slug incoherent avec son dossier parent', async () =

test('findIssues signale un slug racine malforme', async () => {
const dir = await fixture()
await writeFile(join(dir, 'fr/_dir.yml'), 'slug: /_dir\ntitle: Documentation\n')
await writeFile(join(dir, 'fr/.navigation.yml'), 'slug: /.navigation\ntitle: Documentation\n')
await writeFile(join(dir, 'fr/0.home.md'), '---\nslug: accueil\n---\nFR\n')
const issues = await findIssues(dir)
assert.equal(issues.slugErrors.length, 1)
Expand Down Expand Up @@ -125,10 +125,10 @@ test('findIssues ignore une page source portant translate: false', async () => {
})

// Le dispositif lit chaque fichier isolement : aucune cascade ne descend d'un
// _dir.yml vers ses pages. La cle doit donc etre posee page par page.
test('findIssues ne propage pas le translate: false d un _dir.yml aux pages', async () => {
// .navigation.yml vers ses pages. La cle doit donc etre posee page par page.
test('findIssues ne propage pas le translate: false d un .navigation.yml aux pages', async () => {
const dir = await fixture()
await writeFile(join(dir, 'fr/3.engagement/_dir.yml'), 'slug: /engagement/_dir\ntranslate: false\n')
await writeFile(join(dir, 'fr/3.engagement/.navigation.yml'), 'slug: /engagement/.navigation\ntranslate: false\n')
await writeFile(join(dir, 'fr/3.engagement/0.levels.md'), '---\nslug: /engagement/niveaux\n---\nFR\n')
const issues = await findIssues(dir)
assert.deepEqual(issues.untranslated, ['3.engagement/0.levels.md'])
Expand Down
Loading