@ferrflow/doc 7.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/docs-en/ci/github-actions.md +120 -0
  2. package/docs-en/ci/gitlab-ci.md +90 -0
  3. package/docs-en/ci/hosted-bot.md +82 -0
  4. package/docs-en/ci/pipeline-triggers.md +287 -0
  5. package/docs-en/configuration/config-file.md +1259 -0
  6. package/docs-en/configuration/formats.md +220 -0
  7. package/docs-en/configuration/monorepo.md +390 -0
  8. package/docs-en/installation.md +56 -0
  9. package/docs-en/introduction.md +56 -0
  10. package/docs-en/quickstart.md +66 -0
  11. package/docs-en/reference/api.md +106 -0
  12. package/docs-en/reference/cli.md +483 -0
  13. package/docs-en/reference/conventional-commits.md +103 -0
  14. package/docs-en/reference/errors.md +508 -0
  15. package/docs-en/verifying-releases.md +97 -0
  16. package/docs-fr/ci/github-actions.md +109 -0
  17. package/docs-fr/ci/gitlab-ci.md +77 -0
  18. package/docs-fr/ci/hosted-bot.md +82 -0
  19. package/docs-fr/ci/pipeline-triggers.md +238 -0
  20. package/docs-fr/configuration/config-file.md +839 -0
  21. package/docs-fr/configuration/formats.md +163 -0
  22. package/docs-fr/configuration/monorepo.md +357 -0
  23. package/docs-fr/installation.md +56 -0
  24. package/docs-fr/introduction.md +54 -0
  25. package/docs-fr/quickstart.md +63 -0
  26. package/docs-fr/reference/api.md +106 -0
  27. package/docs-fr/reference/cli.md +407 -0
  28. package/docs-fr/reference/conventional-commits.md +103 -0
  29. package/docs-fr/reference/errors.md +378 -0
  30. package/docs-fr/verifying-releases.md +97 -0
  31. package/docs-fr-v4/ci/github-actions.md +106 -0
  32. package/docs-fr-v4/ci/gitlab-ci.md +77 -0
  33. package/docs-fr-v4/ci/pipeline-triggers.md +214 -0
  34. package/docs-fr-v4/configuration/config-file.md +769 -0
  35. package/docs-fr-v4/configuration/formats.md +128 -0
  36. package/docs-fr-v4/configuration/monorepo.md +324 -0
  37. package/docs-fr-v4/installation.md +48 -0
  38. package/docs-fr-v4/introduction.md +54 -0
  39. package/docs-fr-v4/legal/telemetry.md +65 -0
  40. package/docs-fr-v4/quickstart.md +63 -0
  41. package/docs-fr-v4/reference/cli.md +130 -0
  42. package/docs-fr-v4/reference/conventional-commits.md +67 -0
  43. package/docs-fr-v4/reference/errors.md +372 -0
  44. package/docs-fr-v5/ci/github-actions.md +109 -0
  45. package/docs-fr-v5/ci/gitlab-ci.md +77 -0
  46. package/docs-fr-v5/ci/hosted-bot.md +82 -0
  47. package/docs-fr-v5/ci/pipeline-triggers.md +238 -0
  48. package/docs-fr-v5/configuration/config-file.md +812 -0
  49. package/docs-fr-v5/configuration/formats.md +150 -0
  50. package/docs-fr-v5/configuration/monorepo.md +357 -0
  51. package/docs-fr-v5/installation.md +56 -0
  52. package/docs-fr-v5/introduction.md +54 -0
  53. package/docs-fr-v5/legal/telemetry.md +26 -0
  54. package/docs-fr-v5/quickstart.md +63 -0
  55. package/docs-fr-v5/reference/api.md +106 -0
  56. package/docs-fr-v5/reference/cli.md +356 -0
  57. package/docs-fr-v5/reference/conventional-commits.md +88 -0
  58. package/docs-fr-v5/reference/errors.md +378 -0
  59. package/docs-fr-v5/verifying-releases.md +97 -0
  60. package/docs-fr-v6/ci/github-actions.md +109 -0
  61. package/docs-fr-v6/ci/gitlab-ci.md +77 -0
  62. package/docs-fr-v6/ci/hosted-bot.md +82 -0
  63. package/docs-fr-v6/ci/pipeline-triggers.md +238 -0
  64. package/docs-fr-v6/configuration/config-file.md +813 -0
  65. package/docs-fr-v6/configuration/formats.md +150 -0
  66. package/docs-fr-v6/configuration/monorepo.md +357 -0
  67. package/docs-fr-v6/installation.md +56 -0
  68. package/docs-fr-v6/introduction.md +54 -0
  69. package/docs-fr-v6/quickstart.md +63 -0
  70. package/docs-fr-v6/reference/api.md +106 -0
  71. package/docs-fr-v6/reference/cli.md +356 -0
  72. package/docs-fr-v6/reference/conventional-commits.md +88 -0
  73. package/docs-fr-v6/reference/errors.md +378 -0
  74. package/docs-fr-v6/verifying-releases.md +97 -0
  75. package/docs-v0/ci/github-actions.md +77 -0
  76. package/docs-v0/ci/gitlab-ci.md +59 -0
  77. package/docs-v0/configuration/config-file.md +97 -0
  78. package/docs-v0/configuration/formats.md +86 -0
  79. package/docs-v0/configuration/monorepo.md +59 -0
  80. package/docs-v0/installation.md +48 -0
  81. package/docs-v0/introduction.md +34 -0
  82. package/docs-v0/legal/telemetry.md +63 -0
  83. package/docs-v0/quickstart.md +58 -0
  84. package/docs-v0/reference/cli.md +95 -0
  85. package/docs-v0/reference/conventional-commits.md +68 -0
  86. package/docs-v1/ci/github-actions.md +76 -0
  87. package/docs-v1/ci/gitlab-ci.md +58 -0
  88. package/docs-v1/configuration/config-file.md +515 -0
  89. package/docs-v1/configuration/formats.md +115 -0
  90. package/docs-v1/configuration/monorepo.md +246 -0
  91. package/docs-v1/installation.md +48 -0
  92. package/docs-v1/introduction.md +39 -0
  93. package/docs-v1/legal/telemetry.md +63 -0
  94. package/docs-v1/quickstart.md +62 -0
  95. package/docs-v1/reference/cli.md +128 -0
  96. package/docs-v1/reference/conventional-commits.md +67 -0
  97. package/docs-v2/ci/github-actions.md +117 -0
  98. package/docs-v2/ci/gitlab-ci.md +90 -0
  99. package/docs-v2/ci/pipeline-triggers.md +263 -0
  100. package/docs-v2/configuration/config-file.md +806 -0
  101. package/docs-v2/configuration/formats.md +98 -0
  102. package/docs-v2/configuration/monorepo.md +324 -0
  103. package/docs-v2/installation.md +48 -0
  104. package/docs-v2/introduction.md +40 -0
  105. package/docs-v2/legal/telemetry.md +66 -0
  106. package/docs-v2/quickstart.md +63 -0
  107. package/docs-v2/reference/cli.md +130 -0
  108. package/docs-v2/reference/conventional-commits.md +67 -0
  109. package/docs-v2/reference/errors.md +500 -0
  110. package/docs-v2/self-hosting.md +101 -0
  111. package/docs-v3/ci/github-actions.md +117 -0
  112. package/docs-v3/ci/gitlab-ci.md +90 -0
  113. package/docs-v3/ci/pipeline-triggers.md +263 -0
  114. package/docs-v3/configuration/config-file.md +806 -0
  115. package/docs-v3/configuration/formats.md +99 -0
  116. package/docs-v3/configuration/monorepo.md +324 -0
  117. package/docs-v3/installation.md +48 -0
  118. package/docs-v3/introduction.md +40 -0
  119. package/docs-v3/legal/telemetry.md +66 -0
  120. package/docs-v3/quickstart.md +66 -0
  121. package/docs-v3/reference/cli.md +161 -0
  122. package/docs-v3/reference/conventional-commits.md +67 -0
  123. package/docs-v3/reference/errors.md +502 -0
  124. package/docs-v3/self-hosting.md +137 -0
  125. package/docs-v4/ci/github-actions.md +117 -0
  126. package/docs-v4/ci/gitlab-ci.md +90 -0
  127. package/docs-v4/ci/pipeline-triggers.md +263 -0
  128. package/docs-v4/configuration/config-file.md +850 -0
  129. package/docs-v4/configuration/formats.md +182 -0
  130. package/docs-v4/configuration/monorepo.md +324 -0
  131. package/docs-v4/installation.md +48 -0
  132. package/docs-v4/introduction.md +56 -0
  133. package/docs-v4/legal/telemetry.md +65 -0
  134. package/docs-v4/quickstart.md +66 -0
  135. package/docs-v4/reference/cli.md +161 -0
  136. package/docs-v4/reference/conventional-commits.md +67 -0
  137. package/docs-v4/reference/errors.md +502 -0
  138. package/docs-v4/self-hosting.md +137 -0
  139. package/docs-v5/ci/github-actions.md +120 -0
  140. package/docs-v5/ci/gitlab-ci.md +90 -0
  141. package/docs-v5/ci/hosted-bot.md +82 -0
  142. package/docs-v5/ci/pipeline-triggers.md +287 -0
  143. package/docs-v5/configuration/config-file.md +1133 -0
  144. package/docs-v5/configuration/formats.md +206 -0
  145. package/docs-v5/configuration/monorepo.md +390 -0
  146. package/docs-v5/installation.md +56 -0
  147. package/docs-v5/introduction.md +56 -0
  148. package/docs-v5/legal/telemetry.md +26 -0
  149. package/docs-v5/quickstart.md +66 -0
  150. package/docs-v5/reference/api.md +106 -0
  151. package/docs-v5/reference/cli.md +431 -0
  152. package/docs-v5/reference/conventional-commits.md +88 -0
  153. package/docs-v5/reference/errors.md +508 -0
  154. package/docs-v5/verifying-releases.md +97 -0
  155. package/docs-v6/ci/github-actions.md +120 -0
  156. package/docs-v6/ci/gitlab-ci.md +90 -0
  157. package/docs-v6/ci/hosted-bot.md +82 -0
  158. package/docs-v6/ci/pipeline-triggers.md +287 -0
  159. package/docs-v6/configuration/config-file.md +1134 -0
  160. package/docs-v6/configuration/formats.md +206 -0
  161. package/docs-v6/configuration/monorepo.md +390 -0
  162. package/docs-v6/installation.md +56 -0
  163. package/docs-v6/introduction.md +56 -0
  164. package/docs-v6/quickstart.md +66 -0
  165. package/docs-v6/reference/api.md +106 -0
  166. package/docs-v6/reference/cli.md +431 -0
  167. package/docs-v6/reference/conventional-commits.md +88 -0
  168. package/docs-v6/reference/errors.md +508 -0
  169. package/docs-v6/verifying-releases.md +97 -0
  170. package/package.json +17 -0
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: Formats supportés
3
+ description: Formats de fichiers de version que FerrFlow peut lire et mettre à jour.
4
+ ---
5
+
6
+ ## TOML
7
+
8
+ Utilisé par Rust (`Cargo.toml`) et Python (`pyproject.toml`).
9
+
10
+ FerrFlow met à jour le champ `version` sous `[package]`, `[project]` ou `[tool.poetry]`.
11
+
12
+ ```toml
13
+ [package]
14
+ name = "my-crate"
15
+ version = "1.2.3" # ← mis à jour
16
+ ```
17
+
18
+ ## JSON
19
+
20
+ Utilisé par Node.js (`package.json`).
21
+
22
+ FerrFlow met à jour le champ `version` de premier niveau.
23
+
24
+ ```json
25
+ {
26
+ "name": "my-package",
27
+ "version": "1.2.3"
28
+ }
29
+ ```
30
+
31
+ ## XML
32
+
33
+ Utilisé par Java/Maven (`pom.xml`).
34
+
35
+ FerrFlow met à jour le premier élément `<version>` rencontré.
36
+
37
+ ```xml
38
+ <project>
39
+ <groupId>com.example</groupId>
40
+ <artifactId>my-app</artifactId>
41
+ <version>1.2.3</version> <!-- mis à jour -->
42
+ </project>
43
+ ```
44
+
45
+ ## Gradle
46
+
47
+ Utilisé par les projets Java/Kotlin Gradle (`build.gradle`, `build.gradle.kts`).
48
+
49
+ FerrFlow met à jour l'assignation `version = "..."`.
50
+
51
+ ```groovy
52
+ version = "1.2.3" // mis à jour
53
+ ```
54
+
55
+ ## Texte brut
56
+
57
+ Utilisé pour les fichiers de version simples (`VERSION`, `VERSION.txt`).
58
+
59
+ FerrFlow remplace l'intégralité du contenu du fichier par le numéro de version.
60
+
61
+ ```
62
+ 1.2.3
63
+ ```
64
+
65
+ ## Go modules
66
+
67
+ Utilisé par les projets Go (`go.mod`).
68
+
69
+ Les modules Go utilisent directement les tags git — FerrFlow ne modifie **pas** `go.mod`. La version est dérivée entièrement du tag git (`v1.2.3` ou `{name}@v1.2.3`).
70
+
71
+ ## Helm
72
+
73
+ Utilisé par les charts Helm Kubernetes (`Chart.yaml`).
74
+
75
+ FerrFlow met à jour le champ `version` et, lorsqu'il est présent, maintient `appVersion` synchronisé.
76
+
77
+ ```yaml
78
+ apiVersion: v2
79
+ name: my-app
80
+ version: 1.2.3 # ← mis à jour
81
+ appVersion: '1.2.3' # ← mis à jour si présent
82
+ ```
83
+
84
+ ## Plusieurs fichiers par package
85
+
86
+ Un package peut avoir autant d'entrées de fichiers versionnés que nécessaire :
87
+
88
+ <div class="ferr-tabs">
89
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
90
+ &quot;package&quot;: {
91
+ &quot;versionedFiles&quot;: [
92
+ { &quot;path&quot;: &quot;Cargo.toml&quot;, &quot;format&quot;: &quot;toml&quot; },
93
+ { &quot;path&quot;: &quot;npm/package.json&quot;, &quot;format&quot;: &quot;json&quot; }
94
+ ]
95
+ }
96
+ }
97
+ </code></pre>
98
+ </div></div>
99
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[[package.versioned_files]]
100
+ path = &quot;Cargo.toml&quot;
101
+ format = &quot;toml&quot;
102
+
103
+ [[package.versioned_files]]
104
+ path = &quot;npm/package.json&quot;
105
+ format = &quot;json&quot;
106
+ </code></pre>
107
+ </div></div>
108
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
109
+ package: {
110
+ versionedFiles: [
111
+ { path: &quot;Cargo.toml&quot;, format: &quot;toml&quot; },
112
+ { path: &quot;npm/package.json&quot;, format: &quot;json&quot; },
113
+ ],
114
+ },
115
+ }
116
+ </code></pre>
117
+ </div></div>
118
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">package:
119
+ versionedFiles:
120
+ - path: Cargo.toml
121
+ format: toml
122
+ - path: npm/package.json
123
+ format: json
124
+ </code></pre>
125
+ </div></div>
126
+ </div>
127
+
128
+ Les deux fichiers seront mis à jour avec la même version avant le commit git.
@@ -0,0 +1,324 @@
1
+ ---
2
+ title: Monorepo
3
+ description: Versionner plusieurs packages indépendamment dans un seul repository.
4
+ ---
5
+
6
+ FerrFlow considère un repository comme un monorepo lorsque la configuration définit plus d'un package. Chaque package est versionné indépendamment en fonction de son propre historique git.
7
+
8
+ ## Isolation des packages
9
+
10
+ FerrFlow utilise les préfixes de chemin pour déterminer quels commits appartiennent à quel package. Seuls les commits qui touchent des fichiers sous `path` (ou `sharedPaths`) déclenchent une release pour ce package.
11
+
12
+ <div class="ferr-tabs">
13
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
14
+ &quot;package&quot;: [
15
+ {
16
+ &quot;name&quot;: &quot;api&quot;,
17
+ &quot;path&quot;: &quot;packages/api&quot;
18
+ },
19
+ {
20
+ &quot;name&quot;: &quot;site&quot;,
21
+ &quot;path&quot;: &quot;packages/site&quot;
22
+ }
23
+ ]
24
+ }
25
+ </code></pre>
26
+ </div></div>
27
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[[package]]
28
+ name = &quot;api&quot;
29
+ path = &quot;packages/api&quot;
30
+
31
+ [[package]]
32
+ name = &quot;site&quot;
33
+ path = &quot;packages/site&quot;
34
+ </code></pre>
35
+ </div></div>
36
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
37
+ package: [
38
+ {
39
+ name: &quot;api&quot;,
40
+ path: &quot;packages/api&quot;,
41
+ },
42
+ {
43
+ name: &quot;site&quot;,
44
+ path: &quot;packages/site&quot;,
45
+ },
46
+ ],
47
+ }
48
+ </code></pre>
49
+ </div></div>
50
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">package:
51
+ - name: api
52
+ path: packages/api
53
+ - name: site
54
+ path: packages/site
55
+ </code></pre>
56
+ </div></div>
57
+ </div>
58
+
59
+ ## Dépendances partagées
60
+
61
+ Si vous avez du code partagé entre packages (ex. une bibliothèque `packages/shared/`), déclarez-le comme entrée `sharedPaths`. Un changement dans un chemin partagé déclenche une release pour chaque package qui le référence :
62
+
63
+ <div class="ferr-tabs">
64
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
65
+ &quot;package&quot;: [
66
+ {
67
+ &quot;name&quot;: &quot;api&quot;,
68
+ &quot;path&quot;: &quot;packages/api&quot;,
69
+ &quot;sharedPaths&quot;: [&quot;packages/shared/&quot;]
70
+ },
71
+ {
72
+ &quot;name&quot;: &quot;site&quot;,
73
+ &quot;path&quot;: &quot;packages/site&quot;,
74
+ &quot;sharedPaths&quot;: [&quot;packages/shared/&quot;]
75
+ }
76
+ ]
77
+ }
78
+ </code></pre>
79
+ </div></div>
80
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[[package]]
81
+ name = &quot;api&quot;
82
+ path = &quot;packages/api&quot;
83
+ shared_paths = [&quot;packages/shared/&quot;]
84
+
85
+ [[package]]
86
+ name = &quot;site&quot;
87
+ path = &quot;packages/site&quot;
88
+ shared_paths = [&quot;packages/shared/&quot;]
89
+ </code></pre>
90
+ </div></div>
91
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
92
+ package: [
93
+ {
94
+ name: &quot;api&quot;,
95
+ path: &quot;packages/api&quot;,
96
+ sharedPaths: [&quot;packages/shared/&quot;],
97
+ },
98
+ {
99
+ name: &quot;site&quot;,
100
+ path: &quot;packages/site&quot;,
101
+ sharedPaths: [&quot;packages/shared/&quot;],
102
+ },
103
+ ],
104
+ }
105
+ </code></pre>
106
+ </div></div>
107
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">package:
108
+ - name: api
109
+ path: packages/api
110
+ sharedPaths:
111
+ - packages/shared/
112
+ - name: site
113
+ path: packages/site
114
+ sharedPaths:
115
+ - packages/shared/
116
+ </code></pre>
117
+ </div></div>
118
+ </div>
119
+
120
+ ## Dependances entre packages
121
+
122
+ Utilisez `dependsOn` pour declarer qu'un package depend d'un autre. Quand une dependance est publiee, le package dependant recoit automatiquement un bump patch — meme si aucun de ses propres fichiers n'a change. La cascade est transitive : si `app` depend de `cli` et `cli` depend de `core`, publier `core` bumpe aussi `cli` et `app`.
123
+
124
+ <div class="ferr-tabs">
125
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
126
+ &quot;package&quot;: [
127
+ {
128
+ &quot;name&quot;: &quot;core&quot;,
129
+ &quot;path&quot;: &quot;packages/core&quot;
130
+ },
131
+ {
132
+ &quot;name&quot;: &quot;cli&quot;,
133
+ &quot;path&quot;: &quot;packages/cli&quot;,
134
+ &quot;dependsOn&quot;: [&quot;core&quot;]
135
+ },
136
+ {
137
+ &quot;name&quot;: &quot;app&quot;,
138
+ &quot;path&quot;: &quot;packages/app&quot;,
139
+ &quot;dependsOn&quot;: [&quot;cli&quot;]
140
+ }
141
+ ]
142
+ }
143
+ </code></pre>
144
+ </div></div>
145
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[[package]]
146
+ name = &quot;core&quot;
147
+ path = &quot;packages/core&quot;
148
+
149
+ [[package]]
150
+ name = &quot;cli&quot;
151
+ path = &quot;packages/cli&quot;
152
+ depends_on = [&quot;core&quot;]
153
+
154
+ [[package]]
155
+ name = &quot;app&quot;
156
+ path = &quot;packages/app&quot;
157
+ depends_on = [&quot;cli&quot;]
158
+ </code></pre>
159
+ </div></div>
160
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
161
+ package: [
162
+ {
163
+ name: &quot;core&quot;,
164
+ path: &quot;packages/core&quot;,
165
+ },
166
+ {
167
+ name: &quot;cli&quot;,
168
+ path: &quot;packages/cli&quot;,
169
+ dependsOn: [&quot;core&quot;],
170
+ },
171
+ {
172
+ name: &quot;app&quot;,
173
+ path: &quot;packages/app&quot;,
174
+ dependsOn: [&quot;cli&quot;],
175
+ },
176
+ ],
177
+ }
178
+ </code></pre>
179
+ </div></div>
180
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">package:
181
+ - name: core
182
+ path: packages/core
183
+ - name: cli
184
+ path: packages/cli
185
+ dependsOn:
186
+ - core
187
+ - name: app
188
+ path: packages/app
189
+ dependsOn:
190
+ - cli
191
+ </code></pre>
192
+ </div></div>
193
+ </div>
194
+
195
+ <aside class="ferr-aside ferr-aside--note"><div class="ferr-aside__body"><p><code>dependsOn</code> est different de <code>sharedPaths</code>. Les chemins partages declenchent un bump quand des fichiers dans le repertoire partage changent. <code>dependsOn</code> declenche un bump quand un autre <strong>package</strong> est publie, independamment des fichiers modifies.</p>
196
+ </div></aside>
197
+
198
+ ## Format des tags git
199
+
200
+ Par défaut, les tags en monorepo utilisent le format `{name}@v{version}` :
201
+
202
+ ```
203
+ api@v1.2.0
204
+ site@v0.4.1
205
+ ```
206
+
207
+ Configurez cela avec le champ `tagTemplate` :
208
+
209
+ <div class="ferr-tabs">
210
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
211
+ &quot;workspace&quot;: {
212
+ &quot;tagTemplate&quot;: &quot;{name}@v{version}&quot;
213
+ }
214
+ }
215
+ </code></pre>
216
+ </div></div>
217
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
218
+ tag_template = &quot;{name}@v{version}&quot;
219
+ </code></pre>
220
+ </div></div>
221
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
222
+ workspace: {
223
+ tagTemplate: &quot;{name}@v{version}&quot;,
224
+ },
225
+ }
226
+ </code></pre>
227
+ </div></div>
228
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
229
+ tagTemplate: &quot;{name}@v{version}&quot;
230
+ </code></pre>
231
+ </div></div>
232
+ </div>
233
+
234
+ Pour un repo mono-package, le défaut est `v{version}` (sans préfixe de nom).
235
+
236
+ FerrFlow recherche le tag le plus récent correspondant au modèle pour déterminer quels commits sont nouveaux.
237
+
238
+ ## Cadences indépendantes
239
+
240
+ Les packages sont publiés indépendamment. Dans une seule exécution de `ferrflow release` :
241
+
242
+ - `api` peut passer de `1.2.0` → `1.3.0` (nouveau commit `feat:`)
243
+ - `site` peut passer de `0.4.0` → `0.4.1` (uniquement des commits `fix:`)
244
+ - `shared` peut ne pas être publié (uniquement des commits `chore:`)
245
+
246
+ ## Surcharges par package
247
+
248
+ Chaque package peut surcharger la stratégie de `versioning` et le `tagTemplate` du workspace :
249
+
250
+ <div class="ferr-tabs">
251
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
252
+ &quot;workspace&quot;: {
253
+ &quot;versioning&quot;: &quot;semver&quot;,
254
+ &quot;tagTemplate&quot;: &quot;{name}@v{version}&quot;
255
+ },
256
+ &quot;package&quot;: [
257
+ {
258
+ &quot;name&quot;: &quot;api&quot;,
259
+ &quot;path&quot;: &quot;packages/api&quot;,
260
+ &quot;versioning&quot;: &quot;calver&quot;
261
+ },
262
+ {
263
+ &quot;name&quot;: &quot;site&quot;,
264
+ &quot;path&quot;: &quot;packages/site&quot;,
265
+ &quot;tagTemplate&quot;: &quot;site-v{version}&quot;
266
+ }
267
+ ]
268
+ }
269
+ </code></pre>
270
+ </div></div>
271
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
272
+ versioning = &quot;semver&quot;
273
+ tag_template = &quot;{name}@v{version}&quot;
274
+
275
+ [[package]]
276
+ name = &quot;api&quot;
277
+ path = &quot;packages/api&quot;
278
+ versioning = &quot;calver&quot;
279
+
280
+ [[package]]
281
+ name = &quot;site&quot;
282
+ path = &quot;packages/site&quot;
283
+ tag_template = &quot;site-v{version}&quot;
284
+ </code></pre>
285
+ </div></div>
286
+ <div class="ferr-tab" data-label="JSON5"><p class="ferr-tab__label">JSON5</p><div class="ferr-tab__body"><pre><code class="language-json5">{
287
+ workspace: {
288
+ versioning: &quot;semver&quot;,
289
+ tagTemplate: &quot;{name}@v{version}&quot;,
290
+ },
291
+ package: [
292
+ {
293
+ name: &quot;api&quot;,
294
+ path: &quot;packages/api&quot;,
295
+ versioning: &quot;calver&quot;,
296
+ },
297
+ {
298
+ name: &quot;site&quot;,
299
+ path: &quot;packages/site&quot;,
300
+ tagTemplate: &quot;site-v{version}&quot;,
301
+ },
302
+ ],
303
+ }
304
+ </code></pre>
305
+ </div></div>
306
+ <div class="ferr-tab" data-label="YAML"><p class="ferr-tab__label">YAML</p><div class="ferr-tab__body"><pre><code class="language-yaml">workspace:
307
+ versioning: semver
308
+ tagTemplate: &quot;{name}@v{version}&quot;
309
+
310
+ package:
311
+
312
+ - name: api
313
+ path: packages/api
314
+ versioning: calver
315
+ - name: site
316
+ path: packages/site
317
+ tagTemplate: &quot;site-v{version}&quot;
318
+ </code></pre>
319
+
320
+ </div></div>
321
+ </div>
322
+
323
+ <aside class="ferr-aside ferr-aside--tip"><div class="ferr-aside__body"><p>Utilisez <code>ferrflow check</code> pour prévisualiser exactement quels packages seraient publiés et à quelle version avant de lancer une release.</p>
324
+ </div></aside>
@@ -0,0 +1,48 @@
1
+ ---
2
+ title: Installation
3
+ description: Comment installer FerrFlow en local ou en CI.
4
+ ---
5
+
6
+ ## Installation locale
7
+
8
+ <div class="ferr-tabs">
9
+ <div class="ferr-tab" data-label="Cargo"><p class="ferr-tab__label">Cargo</p><div class="ferr-tab__body"><pre><code class="language-bash">cargo install ferrflow
10
+ </code></pre>
11
+ </div></div>
12
+ <div class="ferr-tab" data-label="npm"><p class="ferr-tab__label">npm</p><div class="ferr-tab__body"><pre><code class="language-bash">npm install -g ferrflow
13
+ # ou en dépendance de développement
14
+ npm install -D ferrflow
15
+ </code></pre>
16
+ </div></div>
17
+ <div class="ferr-tab" data-label="WASM (navigateur)"><p class="ferr-tab__label">WASM (navigateur)</p><div class="ferr-tab__body"><pre><code class="language-bash">npm install @ferrflow/wasm
18
+ </code></pre>
19
+ <p>Utilisez FerrFlow directement dans le navigateur — parsez les commits, calculez les incréments de version et générez des changelogs côté client sans backend.</p>
20
+ </div></div>
21
+ <div class="ferr-tab" data-label="Binaire"><p class="ferr-tab__label">Binaire</p><div class="ferr-tab__body"><p>Téléchargez un binaire pré-compilé depuis les <a href="https://github.com/FerrLabs/FerrFlow/releases/latest">Releases</a> :</p>
22
+ <pre><code class="language-bash"># Linux x86_64
23
+ curl -L https://github.com/FerrLabs/FerrFlow/releases/latest/download/ferrflow-linux-x64.tar.gz | tar xz
24
+ sudo mv ferrflow /usr/local/bin/
25
+ </code></pre>
26
+ </div></div>
27
+ <div class="ferr-tab" data-label="Docker"><p class="ferr-tab__label">Docker</p><div class="ferr-tab__body"><pre><code class="language-bash">docker run --rm -v $(pwd):/repo ghcr.io/ferrlabs/ferrflow:latest check
28
+ </code></pre>
29
+ </div></div>
30
+ </div>
31
+
32
+ ## Installation CI
33
+
34
+ La méthode recommandée pour utiliser FerrFlow en CI est la GitHub Action — aucune étape d'installation nécessaire :
35
+
36
+ ```yaml
37
+ - uses: FerrLabs/ferrflow@v4
38
+ env:
39
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+ ```
41
+
42
+ Consultez [GitHub Actions](/fr/docs/ci/github-actions) et [GitLab CI](/fr/docs/ci/gitlab-ci) pour des exemples complets.
43
+
44
+ ## Vérification
45
+
46
+ ```bash
47
+ ferrflow --version
48
+ ```
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: Introduction
3
+ description: Ce qu'est FerrFlow et pourquoi il existe.
4
+ ---
5
+
6
+ FerrFlow est un binaire unique qui automatise le versionnage sémantique pour n'importe quel repository — monorepo ou classique, quel que soit le langage.
7
+
8
+ Il analyse votre historique de commits, détermine le bon incrément de version, met à jour vos fichiers de version, rédige un changelog, crée un tag git et publie une release. Zéro dépendance runtime.
9
+
10
+ <div class="ferr-card-group" data-cols="2">
11
+ <div class="ferr-card"><p class="ferr-card__title">CLI d'abord</p><div class="ferr-card__body"><p>Tout se passe depuis votre terminal ou votre CI. Aucune UI à cliquer, aucun serveur de configuration à surveiller.</p>
12
+ </div></div>
13
+ <div class="ferr-card"><p class="ferr-card__title">Multi-forge</p><div class="ferr-card__body"><p>GitHub, GitLab, auto-hébergé — FerrFlow s&#39;adapte à votre forge. Un seul outil, toutes les plateformes.</p>
14
+ </div></div>
15
+ <div class="ferr-card"><p class="ferr-card__title">Commits conventionnels</p><div class="ferr-card__body"><p>Analyse l&#39;historique des commits pour déterminer les incréments de version automatiquement. Aucune maintenance manuelle du changelog.</p>
16
+ </div></div>
17
+ <div class="ferr-card"><p class="ferr-card__title">Zéro infra</p><div class="ferr-card__body"><p>Un seul binaire, sans daemon, sans serveur, sans base de données. Tourne là où votre CI tourne.</p>
18
+ </div></div>
19
+ </div>
20
+
21
+ ## Pourquoi pas semantic-release ou changesets ?
22
+
23
+ La plupart des outils de versionnage sont liés à un écosystème spécifique ou nécessitent Node.js dans votre CI.
24
+
25
+ | Outil | Monorepo | Multi-langage | Runtime |
26
+ | ---------------- | ----------- | ------------------ | --------- |
27
+ | semantic-release | via plugins | JS/Node uniquement | Node.js |
28
+ | changesets | bump manuel | JS uniquement | Node.js |
29
+ | release-please | limité | partiel | Node.js |
30
+ | cargo-release | non | Rust uniquement | Rust |
31
+ | **FerrFlow** | **natif** | **tous** | **aucun** |
32
+
33
+ FerrFlow est distribué sous forme de binaire compilé. Déposez-le dans n'importe quel environnement CI sans installer de runtime. Un build WASM (`@ferrflow/wasm`) est également disponible pour une utilisation côté navigateur. Pour la comparaison côte-à-côte (latence, RSS, taille) avec les outils de release JS, voir [Performance](/fr/performance) — chiffres rafraîchis à chaque release.
34
+
35
+ <aside class="ferr-aside ferr-aside--note"><p class="ferr-aside__title">À noter</p><div class="ferr-aside__body"><p>FerrFlow ne fait que du versionnage. Le suivi des issues, les secrets et les agents IA vivent dans d&#39;autres produits FerrLabs.</p>
36
+ </div></aside>
37
+
38
+ ## Comment ça marche
39
+
40
+ 1. **Lit les commits** depuis le dernier tag git pour chaque package
41
+ 2. **Détermine l'incrément** à partir des [Conventional Commits](/fr/docs/reference/conventional-commits) (`feat` → minor, `fix` → patch, breaking → major)
42
+ 3. **Met à jour les fichiers de version** — `Cargo.toml`, `package.json`, `pom.xml`, etc.
43
+ 4. **Rédige le changelog** au format Keep a Changelog
44
+ 5. **Crée un tag git** (`api@v1.2.0`) et pousse
45
+ 6. **Publie une release GitHub/GitLab** avec le changelog comme notes de version
46
+
47
+ Dans un monorepo, FerrFlow ne publie que les packages modifiés et comprend les chemins de dépendances partagées.
48
+
49
+ ## Fonctionnalités clés
50
+
51
+ - **Hooks pre/post-release** — exécutez des scripts à chaque étape du cycle de vie (bump, commit, publish, failure)
52
+ - **Commandes de requête** — `ferrflow version`, `ferrflow tag` et `ferrflow status` pour le scripting CI
53
+ - **Tout fichier de version** — Cargo.toml, package.json, pom.xml, build.gradle, Chart.yaml, texte brut, et plus
54
+ - **Support navigateur** — `@ferrflow/wasm` apporte le parsing de commits, le calcul de bump et la génération de changelog dans le navigateur
@@ -0,0 +1,65 @@
1
+ ---
2
+ title: Telemetrie
3
+ description: Ce que FerrFlow collecte, comment les donnees sont anonymisees, et comment desactiver la telemetrie.
4
+ ---
5
+
6
+ FerrFlow collecte des donnees de telemetrie anonymes pour ameliorer l'outil. Cette page explique exactement ce qui est envoye, comment les donnees sont anonymisees, et comment desactiver la telemetrie.
7
+
8
+ ## Ce qui est collecte
9
+
10
+ A chaque execution d'une commande, FerrFlow peut envoyer un evenement contenant :
11
+
12
+ | Champ | Description |
13
+ | --------------- | ----------------------------------------------------------------- |
14
+ | `event_type` | L'action effectuee : `check`, `release`, `version_bump` ou `init` |
15
+ | `commits_count` | Nombre de commits depuis la derniere release |
16
+ | `repo_hash` | Un hash SHA-256 de l'URL du remote git (voir ci-dessous) |
17
+
18
+ Seuls les champs pertinents sont inclus. Les champs vides sont omis.
19
+
20
+ ## Comment les donnees sont anonymisees
21
+
22
+ L'URL de votre depot n'est **jamais envoyee en clair**. FerrFlow calcule un hash SHA-256 de l'URL du remote git et envoie uniquement le digest hexadecimal. Cela permet de compter les depots uniques sans savoir lesquels ils sont.
23
+
24
+ Aucun code source, nom de fichier, message de commit, nom de branche, nom de package, numero de version, adresse IP ou information personnelle n'est collecte ou stocke.
25
+
26
+ ## Ou les donnees sont envoyees
27
+
28
+ Les evenements sont envoyes via une requete POST a `https://api.ferrflow.com/events`. La requete est asynchrone et non-bloquante — elle ne ralentit jamais votre workflow. Si la requete echoue, elle est silencieusement ignoree.
29
+
30
+ ## Comment desactiver
31
+
32
+ Vous pouvez desactiver completement la telemetrie via une variable d'environnement ou votre fichier de configuration.
33
+
34
+ ### Variable d'environnement
35
+
36
+ <div class="ferr-tabs">
37
+ <div class="ferr-tab" data-label="Linux / macOS"><p class="ferr-tab__label">Linux / macOS</p><div class="ferr-tab__body"><pre><code class="language-bash">export FERRFLOW_ANONYMOUS_TELEMETRY=false
38
+ </code></pre>
39
+ </div></div>
40
+ <div class="ferr-tab" data-label="Windows"><p class="ferr-tab__label">Windows</p><div class="ferr-tab__body"><pre><code class="language-powershell">$env:FERRFLOW_ANONYMOUS_TELEMETRY = &quot;false&quot;
41
+ </code></pre>
42
+ </div></div>
43
+ </div>
44
+
45
+ Valeurs acceptees pour desactiver : `false`, `0`, `off`, `no` (insensible a la casse).
46
+
47
+ Depuis la v4.10, FerrFlow honore aussi la variable d'environnement standard [`DO_NOT_TRACK`](https://consoledonottrack.com/) — `DO_NOT_TRACK=1` desactive la telemetrie sans aucune configuration specifique. `FERRFLOW_TELEMETRY=false` reste pris en charge comme alternative pour la retrocompatibilite avec les configs v0/v1.
48
+
49
+ ### Fichier de configuration
50
+
51
+ <div class="ferr-tabs">
52
+ <div class="ferr-tab" data-label="JSON"><p class="ferr-tab__label">JSON</p><div class="ferr-tab__body"><pre><code class="language-json">{
53
+ &quot;workspace&quot;: {
54
+ &quot;anonymous_telemetry&quot;: false
55
+ }
56
+ }
57
+ </code></pre>
58
+ </div></div>
59
+ <div class="ferr-tab" data-label="TOML"><p class="ferr-tab__label">TOML</p><div class="ferr-tab__body"><pre><code class="language-toml">[workspace]
60
+ anonymous_telemetry = false
61
+ </code></pre>
62
+ </div></div>
63
+ </div>
64
+
65
+ L'une ou l'autre methode suffit pour desactiver la telemetrie.