@ferrflow/doc 7.22.1 → 7.23.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.
- package/data/benchmarks.json +689 -689
- package/data/package-schema.json +700 -0
- package/docs-en/reference/cli.md +7 -4
- package/docs-fr/reference/cli.md +7 -4
- package/package.json +1 -1
|
@@ -0,0 +1,700 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://ferrflow.com/schema/ferrflow-package.json",
|
|
4
|
+
"title": "FerrFlow Package",
|
|
5
|
+
"description": "A single package, in a file listed under the root config's `include`. Uses the same keys as a `package` entry. `path` is relative to this file and defaults to its directory.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": [
|
|
8
|
+
"name"
|
|
9
|
+
],
|
|
10
|
+
"properties": {
|
|
11
|
+
"$schema": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"description": "JSON Schema reference for editor autocompletion."
|
|
14
|
+
},
|
|
15
|
+
"name": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Package name, used in tags and changelog headers."
|
|
18
|
+
},
|
|
19
|
+
"path": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Path to the package root, relative to the repo root. Use \".\" for single repos."
|
|
22
|
+
},
|
|
23
|
+
"changelog": {
|
|
24
|
+
"type": [
|
|
25
|
+
"string",
|
|
26
|
+
"null"
|
|
27
|
+
],
|
|
28
|
+
"description": "Path to the changelog file, relative to the repo root."
|
|
29
|
+
},
|
|
30
|
+
"versionedFiles": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"description": "Files that contain the package version to update on release.",
|
|
33
|
+
"items": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": [
|
|
36
|
+
"path",
|
|
37
|
+
"format"
|
|
38
|
+
],
|
|
39
|
+
"properties": {
|
|
40
|
+
"path": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"description": "Path to the version file, relative to the repo root."
|
|
43
|
+
},
|
|
44
|
+
"format": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"description": "File format used to locate and update the version field.",
|
|
47
|
+
"enum": [
|
|
48
|
+
"csproj",
|
|
49
|
+
"toml",
|
|
50
|
+
"json",
|
|
51
|
+
"xml",
|
|
52
|
+
"gradle",
|
|
53
|
+
"gomod",
|
|
54
|
+
"helm",
|
|
55
|
+
"chartyaml",
|
|
56
|
+
"pubspecyaml",
|
|
57
|
+
"galaxyyml",
|
|
58
|
+
"mixexs",
|
|
59
|
+
"gemspec",
|
|
60
|
+
"packageswift",
|
|
61
|
+
"cabal",
|
|
62
|
+
"cmake",
|
|
63
|
+
"txt"
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
"selector": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"description": "Optional selector to disambiguate which version is bumped. xml: a slash-delimited tag path like '/project/version' (or '//tag' for first-anywhere); txt: a regex with one capture group around the version. Without a selector, xml uses a Maven-aware default (first <version> direct child of root)."
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"additionalProperties": false
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"sharedPaths": {
|
|
75
|
+
"type": "array",
|
|
76
|
+
"description": "Paths whose changes should trigger a version bump for this package (monorepo only).",
|
|
77
|
+
"items": {
|
|
78
|
+
"type": "string"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"dependsOn": {
|
|
82
|
+
"type": "array",
|
|
83
|
+
"description": "Packages this package depends on. When one is bumped, this package is bumped too — by default with the same bump type. Each entry is either a package name or an object with a `propagate` policy.",
|
|
84
|
+
"items": {
|
|
85
|
+
"oneOf": [
|
|
86
|
+
{
|
|
87
|
+
"type": "string"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"type": "object",
|
|
91
|
+
"required": [
|
|
92
|
+
"name"
|
|
93
|
+
],
|
|
94
|
+
"properties": {
|
|
95
|
+
"name": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"propagate": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"enum": [
|
|
101
|
+
"same",
|
|
102
|
+
"major-on-major",
|
|
103
|
+
"patch",
|
|
104
|
+
"none"
|
|
105
|
+
],
|
|
106
|
+
"default": "same",
|
|
107
|
+
"description": "How this dependency's bump becomes a bump here. same: identical bump (a breaking upstream makes this package breaking too). major-on-major: major stays major, anything lower becomes a patch. patch: always a patch. none: no cascade from this dependency."
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"additionalProperties": false
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"versioning": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"description": "Versioning strategy for this package. Overrides workspace default.",
|
|
118
|
+
"enum": [
|
|
119
|
+
"semver",
|
|
120
|
+
"calver",
|
|
121
|
+
"calver-short",
|
|
122
|
+
"calver-seq",
|
|
123
|
+
"calver-short-seq",
|
|
124
|
+
"sequential",
|
|
125
|
+
"zerover"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
"versionTemplate": {
|
|
129
|
+
"type": "string",
|
|
130
|
+
"description": "Version format built from named variables. Variables: year, short_year, month, padded_month, day, padded_day, week, padded_week, quarter, seq, major, minor, patch. Each must be separated by a literal so the previous version can be read back. Overrides workspace default. Takes precedence over 'versioning'.",
|
|
131
|
+
"examples": [
|
|
132
|
+
"{year}.{month}.{day}",
|
|
133
|
+
"{short_year}.{padded_month}.{seq}",
|
|
134
|
+
"{year}.Q{quarter}.{seq}",
|
|
135
|
+
"{year}.{minor}.{patch}"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"tagTemplate": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"description": "Tag template for this package. Use {name} for package name and {version} for version. Overrides workspace default.",
|
|
141
|
+
"examples": [
|
|
142
|
+
"v{version}",
|
|
143
|
+
"{name}@v{version}",
|
|
144
|
+
"{name}/v{version}",
|
|
145
|
+
"release-{version}"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"floatingTags": {
|
|
149
|
+
"type": "array",
|
|
150
|
+
"description": "Floating tag levels for this package. Overrides workspace default.",
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"enum": [
|
|
154
|
+
"major",
|
|
155
|
+
"minor"
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"latestTag": {
|
|
160
|
+
"type": "string",
|
|
161
|
+
"description": "Floating alias tag template for this package. Overrides workspace default. Absent means the workspace setting applies.",
|
|
162
|
+
"examples": [
|
|
163
|
+
"latest",
|
|
164
|
+
"{name}@latest"
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
"buildMetadata": {
|
|
168
|
+
"oneOf": [
|
|
169
|
+
{
|
|
170
|
+
"type": "string"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"type": "boolean"
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"description": "Overrides `workspace.buildMetadata` for this package. A command replaces the workspace one, `true` inherits it, and `false` releases this package with a plain version while the rest of the workspace stays stamped."
|
|
177
|
+
},
|
|
178
|
+
"build_metadata": {
|
|
179
|
+
"oneOf": [
|
|
180
|
+
{
|
|
181
|
+
"type": "string"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"type": "boolean"
|
|
185
|
+
}
|
|
186
|
+
],
|
|
187
|
+
"description": "Snake_case form of `buildMetadata` — both spellings are accepted. Overrides `workspace.buildMetadata` for this package. A command replaces the workspace one, `true` inherits it, and `false` releases this package with a plain version while the rest of the workspace stays stamped."
|
|
188
|
+
},
|
|
189
|
+
"hooks": {
|
|
190
|
+
"$ref": "#/$defs/hooks"
|
|
191
|
+
},
|
|
192
|
+
"publishers": {
|
|
193
|
+
"type": "array",
|
|
194
|
+
"description": "Declarative publish targets evaluated after the GitHub Release is created. Each entry is a self-contained intent — see $defs/publisher for the kinds.",
|
|
195
|
+
"items": {
|
|
196
|
+
"$ref": "#/$defs/publisher"
|
|
197
|
+
},
|
|
198
|
+
"default": []
|
|
199
|
+
},
|
|
200
|
+
"updateLockfiles": {
|
|
201
|
+
"type": "boolean",
|
|
202
|
+
"description": "Per-package override for workspace.updateLockfiles. Set false to skip lockfile refresh for this package even when the workspace default is on; set true to refresh only this package when the workspace default is off. Omit to inherit the workspace setting."
|
|
203
|
+
},
|
|
204
|
+
"versionSource": {
|
|
205
|
+
"type": "string",
|
|
206
|
+
"enum": [
|
|
207
|
+
"highest",
|
|
208
|
+
"tag",
|
|
209
|
+
"file"
|
|
210
|
+
],
|
|
211
|
+
"description": "Per-package override for workspace.versionSource. Lets one package in a monorepo pick its own tag-vs-file resolution without changing the policy for the others. Omit to inherit the workspace setting."
|
|
212
|
+
},
|
|
213
|
+
"versioned_files": {
|
|
214
|
+
"type": "array",
|
|
215
|
+
"description": "Snake_case form of `versionedFiles` — both spellings are accepted. Files that contain the package version to update on release.",
|
|
216
|
+
"items": {
|
|
217
|
+
"type": "object",
|
|
218
|
+
"required": [
|
|
219
|
+
"path",
|
|
220
|
+
"format"
|
|
221
|
+
],
|
|
222
|
+
"properties": {
|
|
223
|
+
"path": {
|
|
224
|
+
"type": "string",
|
|
225
|
+
"description": "Path to the version file, relative to the repo root."
|
|
226
|
+
},
|
|
227
|
+
"format": {
|
|
228
|
+
"type": "string",
|
|
229
|
+
"description": "File format used to locate and update the version field.",
|
|
230
|
+
"enum": [
|
|
231
|
+
"csproj",
|
|
232
|
+
"toml",
|
|
233
|
+
"json",
|
|
234
|
+
"xml",
|
|
235
|
+
"gradle",
|
|
236
|
+
"gomod",
|
|
237
|
+
"helm",
|
|
238
|
+
"chartyaml",
|
|
239
|
+
"pubspecyaml",
|
|
240
|
+
"galaxyyml",
|
|
241
|
+
"mixexs",
|
|
242
|
+
"gemspec",
|
|
243
|
+
"packageswift",
|
|
244
|
+
"cabal",
|
|
245
|
+
"cmake",
|
|
246
|
+
"txt"
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
"selector": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"description": "Optional selector to disambiguate which version is bumped. xml: a slash-delimited tag path like '/project/version' (or '//tag' for first-anywhere); txt: a regex with one capture group around the version. Without a selector, xml uses a Maven-aware default (first <version> direct child of root)."
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
"additionalProperties": false
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"shared_paths": {
|
|
258
|
+
"type": "array",
|
|
259
|
+
"description": "Snake_case form of `sharedPaths` — both spellings are accepted. Paths whose changes should trigger a version bump for this package (monorepo only).",
|
|
260
|
+
"items": {
|
|
261
|
+
"type": "string"
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
"depends_on": {
|
|
265
|
+
"type": "array",
|
|
266
|
+
"description": "Snake_case form of `dependsOn` — both spellings are accepted. Packages this package depends on. When one is bumped, this package is bumped too — by default with the same bump type. Each entry is either a package name or an object with a `propagate` policy.",
|
|
267
|
+
"items": {
|
|
268
|
+
"oneOf": [
|
|
269
|
+
{
|
|
270
|
+
"type": "string"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"type": "object",
|
|
274
|
+
"required": [
|
|
275
|
+
"name"
|
|
276
|
+
],
|
|
277
|
+
"properties": {
|
|
278
|
+
"name": {
|
|
279
|
+
"type": "string"
|
|
280
|
+
},
|
|
281
|
+
"propagate": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"enum": [
|
|
284
|
+
"same",
|
|
285
|
+
"major-on-major",
|
|
286
|
+
"patch",
|
|
287
|
+
"none"
|
|
288
|
+
],
|
|
289
|
+
"default": "same",
|
|
290
|
+
"description": "How this dependency's bump becomes a bump here. same: identical bump (a breaking upstream makes this package breaking too). major-on-major: major stays major, anything lower becomes a patch. patch: always a patch. none: no cascade from this dependency."
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
"additionalProperties": false
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
"tag_template": {
|
|
299
|
+
"type": "string",
|
|
300
|
+
"description": "Snake_case form of `tagTemplate` — both spellings are accepted. Tag template for this package. Use {name} for package name and {version} for version. Overrides workspace default.",
|
|
301
|
+
"examples": [
|
|
302
|
+
"v{version}",
|
|
303
|
+
"{name}@v{version}",
|
|
304
|
+
"{name}/v{version}",
|
|
305
|
+
"release-{version}"
|
|
306
|
+
]
|
|
307
|
+
},
|
|
308
|
+
"floating_tags": {
|
|
309
|
+
"type": "array",
|
|
310
|
+
"description": "Snake_case form of `floatingTags` — both spellings are accepted. Floating tag levels for this package. Overrides workspace default.",
|
|
311
|
+
"items": {
|
|
312
|
+
"type": "string",
|
|
313
|
+
"enum": [
|
|
314
|
+
"major",
|
|
315
|
+
"minor"
|
|
316
|
+
]
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
"update_lockfiles": {
|
|
320
|
+
"type": "boolean",
|
|
321
|
+
"description": "Snake_case form of `updateLockfiles` — both spellings are accepted. Per-package override for workspace.updateLockfiles. Set false to skip lockfile refresh for this package even when the workspace default is on; set true to refresh only this package when the workspace default is off. Omit to inherit the workspace setting."
|
|
322
|
+
},
|
|
323
|
+
"version_source": {
|
|
324
|
+
"type": "string",
|
|
325
|
+
"enum": [
|
|
326
|
+
"highest",
|
|
327
|
+
"tag",
|
|
328
|
+
"file"
|
|
329
|
+
],
|
|
330
|
+
"description": "Snake_case form of `versionSource`, both spellings are accepted. Per-package override for workspace.versionSource. Lets one package in a monorepo pick its own tag-vs-file resolution without changing the policy for the others. Omit to inherit the workspace setting."
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
"additionalProperties": false,
|
|
334
|
+
"$defs": {
|
|
335
|
+
"publisher": {
|
|
336
|
+
"oneOf": [
|
|
337
|
+
{
|
|
338
|
+
"type": "object",
|
|
339
|
+
"required": [
|
|
340
|
+
"kind"
|
|
341
|
+
],
|
|
342
|
+
"properties": {
|
|
343
|
+
"kind": {
|
|
344
|
+
"const": "cargo"
|
|
345
|
+
},
|
|
346
|
+
"registry": {
|
|
347
|
+
"type": "string"
|
|
348
|
+
},
|
|
349
|
+
"allowDirty": {
|
|
350
|
+
"type": "boolean",
|
|
351
|
+
"default": false
|
|
352
|
+
},
|
|
353
|
+
"noVerify": {
|
|
354
|
+
"type": "boolean",
|
|
355
|
+
"default": false,
|
|
356
|
+
"description": "Pass cargo publish --no-verify. Set for multi-crate batch releases so inter-dependent crates don't fail on registry-index propagation timing."
|
|
357
|
+
},
|
|
358
|
+
"args": {
|
|
359
|
+
"type": "array",
|
|
360
|
+
"items": {
|
|
361
|
+
"type": "string"
|
|
362
|
+
},
|
|
363
|
+
"description": "Extra flags appended verbatim to the underlying cargo publish invocation. Escape hatch for options FerrFlow doesn't model natively.",
|
|
364
|
+
"default": []
|
|
365
|
+
},
|
|
366
|
+
"allow_dirty": {
|
|
367
|
+
"type": "boolean",
|
|
368
|
+
"default": false,
|
|
369
|
+
"description": "Snake_case form of `allowDirty` — both spellings are accepted."
|
|
370
|
+
},
|
|
371
|
+
"no_verify": {
|
|
372
|
+
"type": "boolean",
|
|
373
|
+
"default": false,
|
|
374
|
+
"description": "Snake_case form of `noVerify` — both spellings are accepted. Pass cargo publish --no-verify. Set for multi-crate batch releases so inter-dependent crates don't fail on registry-index propagation timing."
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"additionalProperties": false
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"type": "object",
|
|
381
|
+
"required": [
|
|
382
|
+
"kind"
|
|
383
|
+
],
|
|
384
|
+
"properties": {
|
|
385
|
+
"kind": {
|
|
386
|
+
"const": "npm"
|
|
387
|
+
},
|
|
388
|
+
"registry": {
|
|
389
|
+
"type": "string"
|
|
390
|
+
},
|
|
391
|
+
"tag": {
|
|
392
|
+
"type": "string"
|
|
393
|
+
},
|
|
394
|
+
"access": {
|
|
395
|
+
"type": "string",
|
|
396
|
+
"enum": [
|
|
397
|
+
"public",
|
|
398
|
+
"restricted"
|
|
399
|
+
]
|
|
400
|
+
},
|
|
401
|
+
"args": {
|
|
402
|
+
"type": "array",
|
|
403
|
+
"items": {
|
|
404
|
+
"type": "string"
|
|
405
|
+
},
|
|
406
|
+
"description": "Extra flags appended verbatim to the underlying npm publish invocation. Escape hatch for options FerrFlow doesn't model natively.",
|
|
407
|
+
"default": []
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"additionalProperties": false
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"type": "object",
|
|
414
|
+
"required": [
|
|
415
|
+
"kind",
|
|
416
|
+
"image"
|
|
417
|
+
],
|
|
418
|
+
"properties": {
|
|
419
|
+
"kind": {
|
|
420
|
+
"const": "docker"
|
|
421
|
+
},
|
|
422
|
+
"image": {
|
|
423
|
+
"type": "string"
|
|
424
|
+
},
|
|
425
|
+
"tags": {
|
|
426
|
+
"type": "array",
|
|
427
|
+
"items": {
|
|
428
|
+
"type": "string"
|
|
429
|
+
},
|
|
430
|
+
"default": [
|
|
431
|
+
"{version}"
|
|
432
|
+
]
|
|
433
|
+
},
|
|
434
|
+
"platforms": {
|
|
435
|
+
"type": "array",
|
|
436
|
+
"items": {
|
|
437
|
+
"type": "string"
|
|
438
|
+
}
|
|
439
|
+
},
|
|
440
|
+
"context": {
|
|
441
|
+
"type": "string",
|
|
442
|
+
"default": "."
|
|
443
|
+
},
|
|
444
|
+
"dockerfile": {
|
|
445
|
+
"type": "string",
|
|
446
|
+
"default": "Dockerfile"
|
|
447
|
+
},
|
|
448
|
+
"sign": {
|
|
449
|
+
"type": "string",
|
|
450
|
+
"enum": [
|
|
451
|
+
"none",
|
|
452
|
+
"sigstore"
|
|
453
|
+
],
|
|
454
|
+
"default": "none"
|
|
455
|
+
},
|
|
456
|
+
"args": {
|
|
457
|
+
"type": "array",
|
|
458
|
+
"items": {
|
|
459
|
+
"type": "string"
|
|
460
|
+
},
|
|
461
|
+
"description": "Extra flags appended verbatim to the underlying docker buildx build invocation (before the build-context positional). Escape hatch for options FerrFlow doesn't model natively.",
|
|
462
|
+
"default": []
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
"additionalProperties": false
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"type": "object",
|
|
469
|
+
"required": [
|
|
470
|
+
"kind",
|
|
471
|
+
"registry"
|
|
472
|
+
],
|
|
473
|
+
"properties": {
|
|
474
|
+
"kind": {
|
|
475
|
+
"const": "helm"
|
|
476
|
+
},
|
|
477
|
+
"chart": {
|
|
478
|
+
"type": "string",
|
|
479
|
+
"default": "."
|
|
480
|
+
},
|
|
481
|
+
"registry": {
|
|
482
|
+
"type": "string"
|
|
483
|
+
},
|
|
484
|
+
"args": {
|
|
485
|
+
"type": "array",
|
|
486
|
+
"items": {
|
|
487
|
+
"type": "string"
|
|
488
|
+
},
|
|
489
|
+
"description": "Extra flags appended verbatim to the underlying helm push invocation. Escape hatch for options FerrFlow doesn't model natively.",
|
|
490
|
+
"default": []
|
|
491
|
+
}
|
|
492
|
+
},
|
|
493
|
+
"additionalProperties": false
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"type": "object",
|
|
497
|
+
"required": [
|
|
498
|
+
"kind",
|
|
499
|
+
"path"
|
|
500
|
+
],
|
|
501
|
+
"properties": {
|
|
502
|
+
"kind": {
|
|
503
|
+
"const": "github-release-asset"
|
|
504
|
+
},
|
|
505
|
+
"path": {
|
|
506
|
+
"type": "string"
|
|
507
|
+
},
|
|
508
|
+
"displayName": {
|
|
509
|
+
"type": "string"
|
|
510
|
+
},
|
|
511
|
+
"args": {
|
|
512
|
+
"type": "array",
|
|
513
|
+
"items": {
|
|
514
|
+
"type": "string"
|
|
515
|
+
},
|
|
516
|
+
"description": "Extra flags appended verbatim to the underlying gh release upload invocation. Escape hatch for options FerrFlow doesn't model natively.",
|
|
517
|
+
"default": []
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
"additionalProperties": false
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
"type": "object",
|
|
524
|
+
"additionalProperties": false,
|
|
525
|
+
"required": [
|
|
526
|
+
"kind"
|
|
527
|
+
],
|
|
528
|
+
"properties": {
|
|
529
|
+
"kind": {
|
|
530
|
+
"const": "pypi"
|
|
531
|
+
},
|
|
532
|
+
"registry": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"description": "Name of an entry under workspace.registries. Its url becomes twine --repository-url and its tokenEnv supplies TWINE_PASSWORD with username __token__. Omit to publish to pypi.org."
|
|
535
|
+
},
|
|
536
|
+
"build": {
|
|
537
|
+
"type": "boolean",
|
|
538
|
+
"default": true,
|
|
539
|
+
"description": "Run python -m build in the package directory before uploading. Set false when the distributions in dist/ are produced earlier in the pipeline."
|
|
540
|
+
},
|
|
541
|
+
"trustedPublishing": {
|
|
542
|
+
"type": "boolean",
|
|
543
|
+
"default": false,
|
|
544
|
+
"description": "Mint a short-lived upload token from PyPI trusted publishing instead of reading a stored token. Requires a GitHub Actions job with permissions: id-token: write, and this repository registered as a trusted publisher for the project. Mutually exclusive with the registry's tokenEnv."
|
|
545
|
+
},
|
|
546
|
+
"trusted_publishing": {
|
|
547
|
+
"type": "boolean",
|
|
548
|
+
"default": false,
|
|
549
|
+
"description": "Snake_case form of `trustedPublishing` — both spellings are accepted. Mint a short-lived upload token from PyPI trusted publishing instead of reading a stored token. Requires a GitHub Actions job with permissions: id-token: write, and this repository registered as a trusted publisher for the project. Mutually exclusive with the registry's tokenEnv."
|
|
550
|
+
},
|
|
551
|
+
"args": {
|
|
552
|
+
"type": "array",
|
|
553
|
+
"items": {
|
|
554
|
+
"type": "string"
|
|
555
|
+
},
|
|
556
|
+
"description": "Extra flags appended verbatim to the underlying twine upload invocation.",
|
|
557
|
+
"default": []
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"type": "object",
|
|
563
|
+
"required": [
|
|
564
|
+
"kind",
|
|
565
|
+
"url"
|
|
566
|
+
],
|
|
567
|
+
"properties": {
|
|
568
|
+
"kind": {
|
|
569
|
+
"const": "webhook"
|
|
570
|
+
},
|
|
571
|
+
"url": {
|
|
572
|
+
"type": "string"
|
|
573
|
+
},
|
|
574
|
+
"body": {},
|
|
575
|
+
"headers": {
|
|
576
|
+
"type": "object",
|
|
577
|
+
"additionalProperties": {
|
|
578
|
+
"type": "string"
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
"additionalProperties": false
|
|
583
|
+
}
|
|
584
|
+
]
|
|
585
|
+
},
|
|
586
|
+
"hooks": {
|
|
587
|
+
"type": "object",
|
|
588
|
+
"description": "Shell commands executed at lifecycle points during release.",
|
|
589
|
+
"properties": {
|
|
590
|
+
"preBump": {
|
|
591
|
+
"type": "string",
|
|
592
|
+
"description": "Run after bump calculation, before writing version files."
|
|
593
|
+
},
|
|
594
|
+
"postBump": {
|
|
595
|
+
"type": "string",
|
|
596
|
+
"description": "Run after writing version files and generating the changelog. The generated section is in FERRFLOW_CHANGELOG, and anything the hook writes is staged into the release commit."
|
|
597
|
+
},
|
|
598
|
+
"preCommit": {
|
|
599
|
+
"type": "string",
|
|
600
|
+
"description": "Run after changelog generation, before git commit."
|
|
601
|
+
},
|
|
602
|
+
"postCommit": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"description": "Run after the release commit is created, before tagging."
|
|
605
|
+
},
|
|
606
|
+
"preTag": {
|
|
607
|
+
"type": "string",
|
|
608
|
+
"description": "Run after the release commit, immediately before git tag."
|
|
609
|
+
},
|
|
610
|
+
"postTag": {
|
|
611
|
+
"type": "string",
|
|
612
|
+
"description": "Run after tags are created, before push."
|
|
613
|
+
},
|
|
614
|
+
"prePublish": {
|
|
615
|
+
"type": "string",
|
|
616
|
+
"description": "Run after commit and tag, before push."
|
|
617
|
+
},
|
|
618
|
+
"postPublish": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"description": "Run after push and release creation."
|
|
621
|
+
},
|
|
622
|
+
"preRelease": {
|
|
623
|
+
"type": "string",
|
|
624
|
+
"description": "Run after the release pull request is opened (PR mode), before merge."
|
|
625
|
+
},
|
|
626
|
+
"onSuccess": {
|
|
627
|
+
"type": "string",
|
|
628
|
+
"description": "Run once after the release completes successfully."
|
|
629
|
+
},
|
|
630
|
+
"onError": {
|
|
631
|
+
"type": "string",
|
|
632
|
+
"description": "Run once when the release fails; receives FERRFLOW_ERROR_CODE."
|
|
633
|
+
},
|
|
634
|
+
"onFailure": {
|
|
635
|
+
"type": "string",
|
|
636
|
+
"description": "Behavior when a hook exits non-zero.",
|
|
637
|
+
"enum": [
|
|
638
|
+
"abort",
|
|
639
|
+
"continue"
|
|
640
|
+
],
|
|
641
|
+
"default": "abort"
|
|
642
|
+
},
|
|
643
|
+
"pre_bump": {
|
|
644
|
+
"type": "string",
|
|
645
|
+
"description": "Snake_case form of `preBump` — both spellings are accepted. Run after bump calculation, before writing version files."
|
|
646
|
+
},
|
|
647
|
+
"post_bump": {
|
|
648
|
+
"type": "string",
|
|
649
|
+
"description": "Snake_case form of `postBump` — both spellings are accepted. Run after writing version files and generating the changelog. The generated section is in FERRFLOW_CHANGELOG, and anything the hook writes is staged into the release commit."
|
|
650
|
+
},
|
|
651
|
+
"pre_commit": {
|
|
652
|
+
"type": "string",
|
|
653
|
+
"description": "Snake_case form of `preCommit` — both spellings are accepted. Run after changelog generation, before git commit."
|
|
654
|
+
},
|
|
655
|
+
"post_commit": {
|
|
656
|
+
"type": "string",
|
|
657
|
+
"description": "Snake_case form of `postCommit` — both spellings are accepted. Run after the release commit is created, before tagging."
|
|
658
|
+
},
|
|
659
|
+
"pre_tag": {
|
|
660
|
+
"type": "string",
|
|
661
|
+
"description": "Snake_case form of `preTag` — both spellings are accepted. Run after the release commit, immediately before git tag."
|
|
662
|
+
},
|
|
663
|
+
"post_tag": {
|
|
664
|
+
"type": "string",
|
|
665
|
+
"description": "Snake_case form of `postTag` — both spellings are accepted. Run after tags are created, before push."
|
|
666
|
+
},
|
|
667
|
+
"pre_publish": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"description": "Snake_case form of `prePublish` — both spellings are accepted. Run after commit and tag, before push."
|
|
670
|
+
},
|
|
671
|
+
"post_publish": {
|
|
672
|
+
"type": "string",
|
|
673
|
+
"description": "Snake_case form of `postPublish` — both spellings are accepted. Run after push and release creation."
|
|
674
|
+
},
|
|
675
|
+
"pre_release": {
|
|
676
|
+
"type": "string",
|
|
677
|
+
"description": "Snake_case form of `preRelease` — both spellings are accepted. Run after the release pull request is opened (PR mode), before merge."
|
|
678
|
+
},
|
|
679
|
+
"on_success": {
|
|
680
|
+
"type": "string",
|
|
681
|
+
"description": "Snake_case form of `onSuccess` — both spellings are accepted. Run once after the release completes successfully."
|
|
682
|
+
},
|
|
683
|
+
"on_error": {
|
|
684
|
+
"type": "string",
|
|
685
|
+
"description": "Snake_case form of `onError` — both spellings are accepted. Run once when the release fails; receives FERRFLOW_ERROR_CODE."
|
|
686
|
+
},
|
|
687
|
+
"on_failure": {
|
|
688
|
+
"type": "string",
|
|
689
|
+
"description": "Snake_case form of `onFailure` — both spellings are accepted. Behavior when a hook exits non-zero.",
|
|
690
|
+
"enum": [
|
|
691
|
+
"abort",
|
|
692
|
+
"continue"
|
|
693
|
+
],
|
|
694
|
+
"default": "abort"
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
"additionalProperties": false
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
}
|