fleetfizz 0.6.0 → 0.7.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 (3) hide show
  1. package/dist/fleetfizz.mjs +338 -138
  2. package/package.json +1 -1
  3. package/schema.json +1064 -245
package/schema.json CHANGED
@@ -24,143 +24,582 @@
24
24
  }
25
25
  },
26
26
  "machines": {
27
- "type": "object",
28
- "propertyNames": {
27
+ "type": "array",
28
+ "items": {
29
29
  "type": "string",
30
30
  "minLength": 1
31
31
  },
32
- "additionalProperties": {
33
- "type": "object",
34
- "properties": {
35
- "clones": {
36
- "type": "string",
37
- "minLength": 1,
38
- "allOf": [
39
- {
40
- "description": "Where this Machine keeps its Managed Clones. `~` expands on that Machine. Default: `~/.local/share/fleetfizz/clones`."
41
- }
42
- ]
43
- }
44
- },
45
- "additionalProperties": false
46
- },
32
+ "minItems": 1,
33
+ "uniqueItems": true,
47
34
  "allOf": [
48
35
  {
49
- "description": "The Fleet, keyed by each Machine's tailnet name. A tailnet member that is not listed is not part of the Fleet."
36
+ "description": "The Fleet: each Machine's tailnet name. A tailnet member that is not listed is not part of the Fleet."
50
37
  }
51
38
  ]
52
39
  },
53
40
  "repos": {
54
- "type": "array",
55
- "items": {
56
- "type": "object",
57
- "properties": {
58
- "platforms": {
59
- "type": "array",
60
- "prefixItems": [
61
- {
62
- "type": "string",
63
- "enum": ["darwin", "linux"]
64
- }
65
- ],
66
- "minItems": 1,
67
- "items": {
41
+ "type": "object",
42
+ "properties": {
43
+ "platforms": {
44
+ "type": "array",
45
+ "prefixItems": [
46
+ {
68
47
  "type": "string",
69
48
  "enum": ["darwin", "linux"]
70
- },
71
- "allOf": [
72
- {
73
- "description": "`darwin`, `linux`, or both."
74
- }
75
- ]
49
+ }
50
+ ],
51
+ "minItems": 1,
52
+ "items": {
53
+ "type": "string",
54
+ "enum": ["darwin", "linux"]
76
55
  },
77
- "machines": {
78
- "type": "array",
79
- "prefixItems": [
80
- {
81
- "type": "string",
82
- "minLength": 1
83
- }
84
- ],
85
- "minItems": 1,
86
- "items": {
56
+ "allOf": [
57
+ {
58
+ "description": "`darwin`, `linux`, or both."
59
+ }
60
+ ]
61
+ },
62
+ "machines": {
63
+ "type": "array",
64
+ "prefixItems": [
65
+ {
87
66
  "type": "string",
88
67
  "minLength": 1
89
- },
90
- "allOf": [
91
- {
92
- "description": "Machine names from `machines`."
93
- }
94
- ]
95
- },
96
- "origin": {
68
+ }
69
+ ],
70
+ "minItems": 1,
71
+ "items": {
97
72
  "type": "string",
98
- "title": "GitHub origin",
99
- "description": "a GitHub \"owner/repo\"",
100
- "allOf": [
101
- {
102
- "description": "The GitHub `owner/repo`."
103
- }
104
- ]
73
+ "minLength": 1
105
74
  },
106
- "ref": {
75
+ "allOf": [
76
+ {
77
+ "description": "Machine names from `machines`."
78
+ }
79
+ ]
80
+ },
81
+ "dependsOn": {
82
+ "type": "array",
83
+ "items": {
107
84
  "type": "string",
108
- "minLength": 1,
109
- "allOf": [
110
- {
111
- "description": "A branch, or a full 40-character commit SHA to pin it."
112
- }
113
- ]
85
+ "enum": ["vp", "brew", "cask", "repos"]
114
86
  },
115
- "install": {
116
- "type": "string",
117
- "minLength": 1,
118
- "allOf": [
119
- {
120
- "description": "The Install Command, run in a login shell inside the Managed Clone."
87
+ "allOf": [
88
+ {
89
+ "description": "Providers whose Items must succeed on a Machine before this one changes there."
90
+ }
91
+ ]
92
+ },
93
+ "cloneRoot": {
94
+ "anyOf": [
95
+ {
96
+ "anyOf": [
97
+ {
98
+ "type": "object",
99
+ "properties": {
100
+ "platforms": {
101
+ "type": "array",
102
+ "prefixItems": [
103
+ {
104
+ "type": "string",
105
+ "enum": ["darwin", "linux"]
106
+ }
107
+ ],
108
+ "minItems": 1,
109
+ "items": {
110
+ "type": "string",
111
+ "enum": ["darwin", "linux"]
112
+ },
113
+ "allOf": [
114
+ {
115
+ "description": "`darwin`, `linux`, or both."
116
+ }
117
+ ]
118
+ },
119
+ "machines": {
120
+ "type": "array",
121
+ "prefixItems": [
122
+ {
123
+ "type": "string",
124
+ "minLength": 1
125
+ }
126
+ ],
127
+ "minItems": 1,
128
+ "items": {
129
+ "type": "string",
130
+ "minLength": 1
131
+ },
132
+ "allOf": [
133
+ {
134
+ "description": "Machine names from `machines`."
135
+ }
136
+ ]
137
+ },
138
+ "path": {
139
+ "type": "string",
140
+ "minLength": 1
141
+ }
142
+ },
143
+ "required": ["path"],
144
+ "additionalProperties": false
145
+ },
146
+ {
147
+ "type": "string",
148
+ "minLength": 1
149
+ }
150
+ ]
151
+ },
152
+ {
153
+ "type": "array",
154
+ "prefixItems": [
155
+ {
156
+ "anyOf": [
157
+ {
158
+ "type": "object",
159
+ "properties": {
160
+ "platforms": {
161
+ "type": "array",
162
+ "prefixItems": [
163
+ {
164
+ "type": "string",
165
+ "enum": ["darwin", "linux"]
166
+ }
167
+ ],
168
+ "minItems": 1,
169
+ "items": {
170
+ "type": "string",
171
+ "enum": ["darwin", "linux"]
172
+ },
173
+ "allOf": [
174
+ {
175
+ "description": "`darwin`, `linux`, or both."
176
+ }
177
+ ]
178
+ },
179
+ "machines": {
180
+ "type": "array",
181
+ "prefixItems": [
182
+ {
183
+ "type": "string",
184
+ "minLength": 1
185
+ }
186
+ ],
187
+ "minItems": 1,
188
+ "items": {
189
+ "type": "string",
190
+ "minLength": 1
191
+ },
192
+ "allOf": [
193
+ {
194
+ "description": "Machine names from `machines`."
195
+ }
196
+ ]
197
+ },
198
+ "path": {
199
+ "type": "string",
200
+ "minLength": 1
201
+ }
202
+ },
203
+ "required": ["path"],
204
+ "additionalProperties": false
205
+ },
206
+ {
207
+ "type": "string",
208
+ "minLength": 1
209
+ }
210
+ ]
211
+ }
212
+ ],
213
+ "minItems": 1,
214
+ "items": {
215
+ "anyOf": [
216
+ {
217
+ "type": "object",
218
+ "properties": {
219
+ "platforms": {
220
+ "type": "array",
221
+ "prefixItems": [
222
+ {
223
+ "type": "string",
224
+ "enum": ["darwin", "linux"]
225
+ }
226
+ ],
227
+ "minItems": 1,
228
+ "items": {
229
+ "type": "string",
230
+ "enum": ["darwin", "linux"]
231
+ },
232
+ "allOf": [
233
+ {
234
+ "description": "`darwin`, `linux`, or both."
235
+ }
236
+ ]
237
+ },
238
+ "machines": {
239
+ "type": "array",
240
+ "prefixItems": [
241
+ {
242
+ "type": "string",
243
+ "minLength": 1
244
+ }
245
+ ],
246
+ "minItems": 1,
247
+ "items": {
248
+ "type": "string",
249
+ "minLength": 1
250
+ },
251
+ "allOf": [
252
+ {
253
+ "description": "Machine names from `machines`."
254
+ }
255
+ ]
256
+ },
257
+ "path": {
258
+ "type": "string",
259
+ "minLength": 1
260
+ }
261
+ },
262
+ "required": ["path"],
263
+ "additionalProperties": false
264
+ },
265
+ {
266
+ "type": "string",
267
+ "minLength": 1
268
+ }
269
+ ]
121
270
  }
122
- ]
123
- },
124
- "name": {
271
+ }
272
+ ],
273
+ "allOf": [
274
+ {
275
+ "description": "Where a Machine keeps its Managed Clones: a path, or a list of `{ path, platforms?, machines? }` where a Machine gets the first that targets it. `~` expands on that Machine. Default: `~/.local/share/fleetfizz/clones`."
276
+ }
277
+ ]
278
+ },
279
+ "items": {
280
+ "type": "object",
281
+ "propertyNames": {
125
282
  "type": "string",
126
- "minLength": 1,
127
- "allOf": [
128
- {
129
- "description": "Names the clone's directory and the repo in output. Default: `<owner>-<repo>`."
130
- }
131
- ]
283
+ "minLength": 1
132
284
  },
133
- "outputs": {
134
- "type": "array",
135
- "items": {
136
- "type": "string",
137
- "minLength": 1
138
- },
139
- "allOf": [
285
+ "additionalProperties": {
286
+ "anyOf": [
140
287
  {
141
- "description": "Paths outside the clone the Install Command produces. If one changes by hand, the repo reinstalls."
142
- }
143
- ]
144
- },
145
- "files": {
146
- "type": "object",
147
- "propertyNames": {
148
- "type": "string",
149
- "minLength": 1
150
- },
151
- "additionalProperties": {
152
- "type": "string"
153
- },
154
- "allOf": [
288
+ "type": "object",
289
+ "properties": {
290
+ "platforms": {
291
+ "type": "array",
292
+ "prefixItems": [
293
+ {
294
+ "type": "string",
295
+ "enum": ["darwin", "linux"]
296
+ }
297
+ ],
298
+ "minItems": 1,
299
+ "items": {
300
+ "type": "string",
301
+ "enum": ["darwin", "linux"]
302
+ },
303
+ "allOf": [
304
+ {
305
+ "description": "`darwin`, `linux`, or both."
306
+ }
307
+ ]
308
+ },
309
+ "machines": {
310
+ "type": "array",
311
+ "prefixItems": [
312
+ {
313
+ "type": "string",
314
+ "minLength": 1
315
+ }
316
+ ],
317
+ "minItems": 1,
318
+ "items": {
319
+ "type": "string",
320
+ "minLength": 1
321
+ },
322
+ "allOf": [
323
+ {
324
+ "description": "Machine names from `machines`."
325
+ }
326
+ ]
327
+ },
328
+ "origin": {
329
+ "type": "string",
330
+ "title": "GitHub origin",
331
+ "description": "a GitHub \"owner/repo\"",
332
+ "allOf": [
333
+ {
334
+ "description": "The GitHub `owner/repo`."
335
+ }
336
+ ]
337
+ },
338
+ "ref": {
339
+ "type": "string",
340
+ "minLength": 1,
341
+ "allOf": [
342
+ {
343
+ "description": "A branch, or a full 40-character commit SHA to pin it."
344
+ }
345
+ ]
346
+ },
347
+ "install": {
348
+ "type": "string",
349
+ "minLength": 1,
350
+ "allOf": [
351
+ {
352
+ "description": "The Install Command, run in a login shell inside the Managed Clone."
353
+ }
354
+ ]
355
+ },
356
+ "outputs": {
357
+ "type": "array",
358
+ "items": {
359
+ "type": "string",
360
+ "minLength": 1
361
+ },
362
+ "allOf": [
363
+ {
364
+ "description": "Paths outside the clone the Install Command produces. If one changes by hand, the repo reinstalls."
365
+ }
366
+ ]
367
+ },
368
+ "files": {
369
+ "type": "object",
370
+ "propertyNames": {
371
+ "type": "string",
372
+ "minLength": 1
373
+ },
374
+ "additionalProperties": {
375
+ "type": "string"
376
+ },
377
+ "allOf": [
378
+ {
379
+ "description": "Gitignored files (Clone Files) written into the clone before every install, keyed by path. Never secrets."
380
+ }
381
+ ]
382
+ }
383
+ },
384
+ "required": ["origin", "ref", "install"],
385
+ "additionalProperties": false
386
+ },
155
387
  {
156
- "description": "Gitignored files written into the clone before every install, keyed by path. Never secrets."
388
+ "type": "array",
389
+ "prefixItems": [
390
+ {
391
+ "type": "object",
392
+ "properties": {
393
+ "platforms": {
394
+ "type": "array",
395
+ "prefixItems": [
396
+ {
397
+ "type": "string",
398
+ "enum": ["darwin", "linux"]
399
+ }
400
+ ],
401
+ "minItems": 1,
402
+ "items": {
403
+ "type": "string",
404
+ "enum": ["darwin", "linux"]
405
+ },
406
+ "allOf": [
407
+ {
408
+ "description": "`darwin`, `linux`, or both."
409
+ }
410
+ ]
411
+ },
412
+ "machines": {
413
+ "type": "array",
414
+ "prefixItems": [
415
+ {
416
+ "type": "string",
417
+ "minLength": 1
418
+ }
419
+ ],
420
+ "minItems": 1,
421
+ "items": {
422
+ "type": "string",
423
+ "minLength": 1
424
+ },
425
+ "allOf": [
426
+ {
427
+ "description": "Machine names from `machines`."
428
+ }
429
+ ]
430
+ },
431
+ "origin": {
432
+ "type": "string",
433
+ "title": "GitHub origin",
434
+ "description": "a GitHub \"owner/repo\"",
435
+ "allOf": [
436
+ {
437
+ "description": "The GitHub `owner/repo`."
438
+ }
439
+ ]
440
+ },
441
+ "ref": {
442
+ "type": "string",
443
+ "minLength": 1,
444
+ "allOf": [
445
+ {
446
+ "description": "A branch, or a full 40-character commit SHA to pin it."
447
+ }
448
+ ]
449
+ },
450
+ "install": {
451
+ "type": "string",
452
+ "minLength": 1,
453
+ "allOf": [
454
+ {
455
+ "description": "The Install Command, run in a login shell inside the Managed Clone."
456
+ }
457
+ ]
458
+ },
459
+ "outputs": {
460
+ "type": "array",
461
+ "items": {
462
+ "type": "string",
463
+ "minLength": 1
464
+ },
465
+ "allOf": [
466
+ {
467
+ "description": "Paths outside the clone the Install Command produces. If one changes by hand, the repo reinstalls."
468
+ }
469
+ ]
470
+ },
471
+ "files": {
472
+ "type": "object",
473
+ "propertyNames": {
474
+ "type": "string",
475
+ "minLength": 1
476
+ },
477
+ "additionalProperties": {
478
+ "type": "string"
479
+ },
480
+ "allOf": [
481
+ {
482
+ "description": "Gitignored files (Clone Files) written into the clone before every install, keyed by path. Never secrets."
483
+ }
484
+ ]
485
+ }
486
+ },
487
+ "required": ["origin", "ref", "install"],
488
+ "additionalProperties": false
489
+ }
490
+ ],
491
+ "minItems": 1,
492
+ "items": {
493
+ "type": "object",
494
+ "properties": {
495
+ "platforms": {
496
+ "type": "array",
497
+ "prefixItems": [
498
+ {
499
+ "type": "string",
500
+ "enum": ["darwin", "linux"]
501
+ }
502
+ ],
503
+ "minItems": 1,
504
+ "items": {
505
+ "type": "string",
506
+ "enum": ["darwin", "linux"]
507
+ },
508
+ "allOf": [
509
+ {
510
+ "description": "`darwin`, `linux`, or both."
511
+ }
512
+ ]
513
+ },
514
+ "machines": {
515
+ "type": "array",
516
+ "prefixItems": [
517
+ {
518
+ "type": "string",
519
+ "minLength": 1
520
+ }
521
+ ],
522
+ "minItems": 1,
523
+ "items": {
524
+ "type": "string",
525
+ "minLength": 1
526
+ },
527
+ "allOf": [
528
+ {
529
+ "description": "Machine names from `machines`."
530
+ }
531
+ ]
532
+ },
533
+ "origin": {
534
+ "type": "string",
535
+ "title": "GitHub origin",
536
+ "description": "a GitHub \"owner/repo\"",
537
+ "allOf": [
538
+ {
539
+ "description": "The GitHub `owner/repo`."
540
+ }
541
+ ]
542
+ },
543
+ "ref": {
544
+ "type": "string",
545
+ "minLength": 1,
546
+ "allOf": [
547
+ {
548
+ "description": "A branch, or a full 40-character commit SHA to pin it."
549
+ }
550
+ ]
551
+ },
552
+ "install": {
553
+ "type": "string",
554
+ "minLength": 1,
555
+ "allOf": [
556
+ {
557
+ "description": "The Install Command, run in a login shell inside the Managed Clone."
558
+ }
559
+ ]
560
+ },
561
+ "outputs": {
562
+ "type": "array",
563
+ "items": {
564
+ "type": "string",
565
+ "minLength": 1
566
+ },
567
+ "allOf": [
568
+ {
569
+ "description": "Paths outside the clone the Install Command produces. If one changes by hand, the repo reinstalls."
570
+ }
571
+ ]
572
+ },
573
+ "files": {
574
+ "type": "object",
575
+ "propertyNames": {
576
+ "type": "string",
577
+ "minLength": 1
578
+ },
579
+ "additionalProperties": {
580
+ "type": "string"
581
+ },
582
+ "allOf": [
583
+ {
584
+ "description": "Gitignored files (Clone Files) written into the clone before every install, keyed by path. Never secrets."
585
+ }
586
+ ]
587
+ }
588
+ },
589
+ "required": ["origin", "ref", "install"],
590
+ "additionalProperties": false
591
+ }
157
592
  }
158
593
  ]
159
- }
160
- },
161
- "required": ["origin", "ref", "install"],
162
- "additionalProperties": false
594
+ },
595
+ "allOf": [
596
+ {
597
+ "description": "Tracked Repos, keyed by name, which names the Managed Clone and the `repos:<name>` Item. Each is `{ origin, ref, install, ... }`, or a list of Variants, of which a Machine gets the first that targets it."
598
+ }
599
+ ]
600
+ }
163
601
  },
602
+ "additionalProperties": false,
164
603
  "allOf": [
165
604
  {
166
605
  "description": "Each Tracked Repo is cloned on every targeted Machine and installed from its origin ref."
@@ -216,7 +655,7 @@
216
655
  },
217
656
  "allOf": [
218
657
  {
219
- "description": "Providers whose Items must succeed on a Machine before vp changes there."
658
+ "description": "Providers whose Items must succeed on a Machine before this one changes there."
220
659
  }
221
660
  ]
222
661
  },
@@ -274,7 +713,7 @@
274
713
  }
275
714
  ]
276
715
  },
277
- "globals": {
716
+ "items": {
278
717
  "type": "object",
279
718
  "propertyNames": {
280
719
  "type": "string",
@@ -283,63 +722,187 @@
283
722
  "additionalProperties": {
284
723
  "anyOf": [
285
724
  {
286
- "type": "string",
287
- "minLength": 1
288
- },
289
- {
290
- "type": "object",
291
- "properties": {
292
- "platforms": {
293
- "type": "array",
294
- "prefixItems": [
295
- {
725
+ "anyOf": [
726
+ {
727
+ "type": "object",
728
+ "properties": {
729
+ "platforms": {
730
+ "type": "array",
731
+ "prefixItems": [
732
+ {
733
+ "type": "string",
734
+ "enum": ["darwin", "linux"]
735
+ }
736
+ ],
737
+ "minItems": 1,
738
+ "items": {
739
+ "type": "string",
740
+ "enum": ["darwin", "linux"]
741
+ },
742
+ "allOf": [
743
+ {
744
+ "description": "`darwin`, `linux`, or both."
745
+ }
746
+ ]
747
+ },
748
+ "machines": {
749
+ "type": "array",
750
+ "prefixItems": [
751
+ {
752
+ "type": "string",
753
+ "minLength": 1
754
+ }
755
+ ],
756
+ "minItems": 1,
757
+ "items": {
758
+ "type": "string",
759
+ "minLength": 1
760
+ },
761
+ "allOf": [
762
+ {
763
+ "description": "Machine names from `machines`."
764
+ }
765
+ ]
766
+ },
767
+ "range": {
296
768
  "type": "string",
297
- "enum": ["darwin", "linux"]
769
+ "minLength": 1
298
770
  }
299
- ],
300
- "minItems": 1,
301
- "items": {
302
- "type": "string",
303
- "enum": ["darwin", "linux"]
304
771
  },
305
- "allOf": [
306
- {
307
- "description": "`darwin`, `linux`, or both."
308
- }
309
- ]
772
+ "required": ["range"],
773
+ "additionalProperties": false
310
774
  },
311
- "machines": {
312
- "type": "array",
313
- "prefixItems": [
775
+ {
776
+ "type": "string",
777
+ "minLength": 1
778
+ }
779
+ ]
780
+ },
781
+ {
782
+ "type": "array",
783
+ "prefixItems": [
784
+ {
785
+ "anyOf": [
786
+ {
787
+ "type": "object",
788
+ "properties": {
789
+ "platforms": {
790
+ "type": "array",
791
+ "prefixItems": [
792
+ {
793
+ "type": "string",
794
+ "enum": ["darwin", "linux"]
795
+ }
796
+ ],
797
+ "minItems": 1,
798
+ "items": {
799
+ "type": "string",
800
+ "enum": ["darwin", "linux"]
801
+ },
802
+ "allOf": [
803
+ {
804
+ "description": "`darwin`, `linux`, or both."
805
+ }
806
+ ]
807
+ },
808
+ "machines": {
809
+ "type": "array",
810
+ "prefixItems": [
811
+ {
812
+ "type": "string",
813
+ "minLength": 1
814
+ }
815
+ ],
816
+ "minItems": 1,
817
+ "items": {
818
+ "type": "string",
819
+ "minLength": 1
820
+ },
821
+ "allOf": [
822
+ {
823
+ "description": "Machine names from `machines`."
824
+ }
825
+ ]
826
+ },
827
+ "range": {
828
+ "type": "string",
829
+ "minLength": 1
830
+ }
831
+ },
832
+ "required": ["range"],
833
+ "additionalProperties": false
834
+ },
314
835
  {
315
836
  "type": "string",
316
837
  "minLength": 1
317
838
  }
318
- ],
319
- "minItems": 1,
320
- "items": {
321
- "type": "string",
322
- "minLength": 1
323
- },
324
- "allOf": [
325
- {
326
- "description": "Machine names from `machines`."
327
- }
328
839
  ]
329
- },
330
- "range": {
331
- "type": "string",
332
- "minLength": 1
333
840
  }
334
- },
335
- "required": ["range"],
336
- "additionalProperties": false
841
+ ],
842
+ "minItems": 1,
843
+ "items": {
844
+ "anyOf": [
845
+ {
846
+ "type": "object",
847
+ "properties": {
848
+ "platforms": {
849
+ "type": "array",
850
+ "prefixItems": [
851
+ {
852
+ "type": "string",
853
+ "enum": ["darwin", "linux"]
854
+ }
855
+ ],
856
+ "minItems": 1,
857
+ "items": {
858
+ "type": "string",
859
+ "enum": ["darwin", "linux"]
860
+ },
861
+ "allOf": [
862
+ {
863
+ "description": "`darwin`, `linux`, or both."
864
+ }
865
+ ]
866
+ },
867
+ "machines": {
868
+ "type": "array",
869
+ "prefixItems": [
870
+ {
871
+ "type": "string",
872
+ "minLength": 1
873
+ }
874
+ ],
875
+ "minItems": 1,
876
+ "items": {
877
+ "type": "string",
878
+ "minLength": 1
879
+ },
880
+ "allOf": [
881
+ {
882
+ "description": "Machine names from `machines`."
883
+ }
884
+ ]
885
+ },
886
+ "range": {
887
+ "type": "string",
888
+ "minLength": 1
889
+ }
890
+ },
891
+ "required": ["range"],
892
+ "additionalProperties": false
893
+ },
894
+ {
895
+ "type": "string",
896
+ "minLength": 1
897
+ }
898
+ ]
899
+ }
337
900
  }
338
901
  ]
339
902
  },
340
903
  "allOf": [
341
904
  {
342
- "description": "Global packages, each with a Range, or `{ range, platforms?, machines? }` to target one."
905
+ "description": "Globals, keyed by package. Each is a Range, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it."
343
906
  }
344
907
  ]
345
908
  }
@@ -413,65 +976,193 @@
413
976
  "additionalProperties": {
414
977
  "anyOf": [
415
978
  {
416
- "type": "string",
417
- "enum": ["*", "latest"],
418
- "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
419
- },
420
- {
421
- "type": "object",
422
- "properties": {
423
- "platforms": {
424
- "type": "array",
425
- "prefixItems": [
426
- {
979
+ "anyOf": [
980
+ {
981
+ "type": "object",
982
+ "properties": {
983
+ "platforms": {
984
+ "type": "array",
985
+ "prefixItems": [
986
+ {
987
+ "type": "string",
988
+ "enum": ["darwin", "linux"]
989
+ }
990
+ ],
991
+ "minItems": 1,
992
+ "items": {
993
+ "type": "string",
994
+ "enum": ["darwin", "linux"]
995
+ },
996
+ "allOf": [
997
+ {
998
+ "description": "`darwin`, `linux`, or both."
999
+ }
1000
+ ]
1001
+ },
1002
+ "machines": {
1003
+ "type": "array",
1004
+ "prefixItems": [
1005
+ {
1006
+ "type": "string",
1007
+ "minLength": 1
1008
+ }
1009
+ ],
1010
+ "minItems": 1,
1011
+ "items": {
1012
+ "type": "string",
1013
+ "minLength": 1
1014
+ },
1015
+ "allOf": [
1016
+ {
1017
+ "description": "Machine names from `machines`."
1018
+ }
1019
+ ]
1020
+ },
1021
+ "range": {
427
1022
  "type": "string",
428
- "enum": ["darwin", "linux"]
1023
+ "enum": ["*", "latest"],
1024
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
429
1025
  }
430
- ],
431
- "minItems": 1,
432
- "items": {
433
- "type": "string",
434
- "enum": ["darwin", "linux"]
435
1026
  },
436
- "allOf": [
437
- {
438
- "description": "`darwin`, `linux`, or both."
439
- }
440
- ]
1027
+ "required": ["range"],
1028
+ "additionalProperties": false
441
1029
  },
442
- "machines": {
443
- "type": "array",
444
- "prefixItems": [
1030
+ {
1031
+ "type": "string",
1032
+ "enum": ["*", "latest"],
1033
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1034
+ }
1035
+ ]
1036
+ },
1037
+ {
1038
+ "type": "array",
1039
+ "prefixItems": [
1040
+ {
1041
+ "anyOf": [
445
1042
  {
446
- "type": "string",
447
- "minLength": 1
448
- }
449
- ],
450
- "minItems": 1,
451
- "items": {
452
- "type": "string",
453
- "minLength": 1
454
- },
455
- "allOf": [
1043
+ "type": "object",
1044
+ "properties": {
1045
+ "platforms": {
1046
+ "type": "array",
1047
+ "prefixItems": [
1048
+ {
1049
+ "type": "string",
1050
+ "enum": ["darwin", "linux"]
1051
+ }
1052
+ ],
1053
+ "minItems": 1,
1054
+ "items": {
1055
+ "type": "string",
1056
+ "enum": ["darwin", "linux"]
1057
+ },
1058
+ "allOf": [
1059
+ {
1060
+ "description": "`darwin`, `linux`, or both."
1061
+ }
1062
+ ]
1063
+ },
1064
+ "machines": {
1065
+ "type": "array",
1066
+ "prefixItems": [
1067
+ {
1068
+ "type": "string",
1069
+ "minLength": 1
1070
+ }
1071
+ ],
1072
+ "minItems": 1,
1073
+ "items": {
1074
+ "type": "string",
1075
+ "minLength": 1
1076
+ },
1077
+ "allOf": [
1078
+ {
1079
+ "description": "Machine names from `machines`."
1080
+ }
1081
+ ]
1082
+ },
1083
+ "range": {
1084
+ "type": "string",
1085
+ "enum": ["*", "latest"],
1086
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1087
+ }
1088
+ },
1089
+ "required": ["range"],
1090
+ "additionalProperties": false
1091
+ },
456
1092
  {
457
- "description": "Machine names from `machines`."
1093
+ "type": "string",
1094
+ "enum": ["*", "latest"],
1095
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
458
1096
  }
459
1097
  ]
460
- },
461
- "range": {
462
- "type": "string",
463
- "enum": ["*", "latest"],
464
- "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
465
1098
  }
466
- },
467
- "required": ["range"],
468
- "additionalProperties": false
1099
+ ],
1100
+ "minItems": 1,
1101
+ "items": {
1102
+ "anyOf": [
1103
+ {
1104
+ "type": "object",
1105
+ "properties": {
1106
+ "platforms": {
1107
+ "type": "array",
1108
+ "prefixItems": [
1109
+ {
1110
+ "type": "string",
1111
+ "enum": ["darwin", "linux"]
1112
+ }
1113
+ ],
1114
+ "minItems": 1,
1115
+ "items": {
1116
+ "type": "string",
1117
+ "enum": ["darwin", "linux"]
1118
+ },
1119
+ "allOf": [
1120
+ {
1121
+ "description": "`darwin`, `linux`, or both."
1122
+ }
1123
+ ]
1124
+ },
1125
+ "machines": {
1126
+ "type": "array",
1127
+ "prefixItems": [
1128
+ {
1129
+ "type": "string",
1130
+ "minLength": 1
1131
+ }
1132
+ ],
1133
+ "minItems": 1,
1134
+ "items": {
1135
+ "type": "string",
1136
+ "minLength": 1
1137
+ },
1138
+ "allOf": [
1139
+ {
1140
+ "description": "Machine names from `machines`."
1141
+ }
1142
+ ]
1143
+ },
1144
+ "range": {
1145
+ "type": "string",
1146
+ "enum": ["*", "latest"],
1147
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1148
+ }
1149
+ },
1150
+ "required": ["range"],
1151
+ "additionalProperties": false
1152
+ },
1153
+ {
1154
+ "type": "string",
1155
+ "enum": ["*", "latest"],
1156
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1157
+ }
1158
+ ]
1159
+ }
469
1160
  }
470
1161
  ]
471
1162
  },
472
1163
  "allOf": [
473
1164
  {
474
- "description": "Formulae, each `\"*\"` or `\"latest\"`, or `{ range, platforms?, machines? }` to target one. A tapped name (`owner/tap/name`) taps on install."
1165
+ "description": "Formulae, keyed by name. Each is `\"*\"` or `\"latest\"`, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it. A tapped name (`owner/tap/name`) taps on install."
475
1166
  }
476
1167
  ]
477
1168
  }
@@ -545,65 +1236,193 @@
545
1236
  "additionalProperties": {
546
1237
  "anyOf": [
547
1238
  {
548
- "type": "string",
549
- "enum": ["*", "latest"],
550
- "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
551
- },
552
- {
553
- "type": "object",
554
- "properties": {
555
- "platforms": {
556
- "type": "array",
557
- "prefixItems": [
558
- {
1239
+ "anyOf": [
1240
+ {
1241
+ "type": "object",
1242
+ "properties": {
1243
+ "platforms": {
1244
+ "type": "array",
1245
+ "prefixItems": [
1246
+ {
1247
+ "type": "string",
1248
+ "enum": ["darwin", "linux"]
1249
+ }
1250
+ ],
1251
+ "minItems": 1,
1252
+ "items": {
1253
+ "type": "string",
1254
+ "enum": ["darwin", "linux"]
1255
+ },
1256
+ "allOf": [
1257
+ {
1258
+ "description": "`darwin`, `linux`, or both."
1259
+ }
1260
+ ]
1261
+ },
1262
+ "machines": {
1263
+ "type": "array",
1264
+ "prefixItems": [
1265
+ {
1266
+ "type": "string",
1267
+ "minLength": 1
1268
+ }
1269
+ ],
1270
+ "minItems": 1,
1271
+ "items": {
1272
+ "type": "string",
1273
+ "minLength": 1
1274
+ },
1275
+ "allOf": [
1276
+ {
1277
+ "description": "Machine names from `machines`."
1278
+ }
1279
+ ]
1280
+ },
1281
+ "range": {
559
1282
  "type": "string",
560
- "enum": ["darwin", "linux"]
1283
+ "enum": ["*", "latest"],
1284
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
561
1285
  }
562
- ],
563
- "minItems": 1,
564
- "items": {
565
- "type": "string",
566
- "enum": ["darwin", "linux"]
567
1286
  },
568
- "allOf": [
569
- {
570
- "description": "`darwin`, `linux`, or both."
571
- }
572
- ]
1287
+ "required": ["range"],
1288
+ "additionalProperties": false
573
1289
  },
574
- "machines": {
575
- "type": "array",
576
- "prefixItems": [
1290
+ {
1291
+ "type": "string",
1292
+ "enum": ["*", "latest"],
1293
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1294
+ }
1295
+ ]
1296
+ },
1297
+ {
1298
+ "type": "array",
1299
+ "prefixItems": [
1300
+ {
1301
+ "anyOf": [
577
1302
  {
578
- "type": "string",
579
- "minLength": 1
580
- }
581
- ],
582
- "minItems": 1,
583
- "items": {
584
- "type": "string",
585
- "minLength": 1
586
- },
587
- "allOf": [
1303
+ "type": "object",
1304
+ "properties": {
1305
+ "platforms": {
1306
+ "type": "array",
1307
+ "prefixItems": [
1308
+ {
1309
+ "type": "string",
1310
+ "enum": ["darwin", "linux"]
1311
+ }
1312
+ ],
1313
+ "minItems": 1,
1314
+ "items": {
1315
+ "type": "string",
1316
+ "enum": ["darwin", "linux"]
1317
+ },
1318
+ "allOf": [
1319
+ {
1320
+ "description": "`darwin`, `linux`, or both."
1321
+ }
1322
+ ]
1323
+ },
1324
+ "machines": {
1325
+ "type": "array",
1326
+ "prefixItems": [
1327
+ {
1328
+ "type": "string",
1329
+ "minLength": 1
1330
+ }
1331
+ ],
1332
+ "minItems": 1,
1333
+ "items": {
1334
+ "type": "string",
1335
+ "minLength": 1
1336
+ },
1337
+ "allOf": [
1338
+ {
1339
+ "description": "Machine names from `machines`."
1340
+ }
1341
+ ]
1342
+ },
1343
+ "range": {
1344
+ "type": "string",
1345
+ "enum": ["*", "latest"],
1346
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1347
+ }
1348
+ },
1349
+ "required": ["range"],
1350
+ "additionalProperties": false
1351
+ },
588
1352
  {
589
- "description": "Machine names from `machines`."
1353
+ "type": "string",
1354
+ "enum": ["*", "latest"],
1355
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
590
1356
  }
591
1357
  ]
592
- },
593
- "range": {
594
- "type": "string",
595
- "enum": ["*", "latest"],
596
- "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
597
1358
  }
598
- },
599
- "required": ["range"],
600
- "additionalProperties": false
1359
+ ],
1360
+ "minItems": 1,
1361
+ "items": {
1362
+ "anyOf": [
1363
+ {
1364
+ "type": "object",
1365
+ "properties": {
1366
+ "platforms": {
1367
+ "type": "array",
1368
+ "prefixItems": [
1369
+ {
1370
+ "type": "string",
1371
+ "enum": ["darwin", "linux"]
1372
+ }
1373
+ ],
1374
+ "minItems": 1,
1375
+ "items": {
1376
+ "type": "string",
1377
+ "enum": ["darwin", "linux"]
1378
+ },
1379
+ "allOf": [
1380
+ {
1381
+ "description": "`darwin`, `linux`, or both."
1382
+ }
1383
+ ]
1384
+ },
1385
+ "machines": {
1386
+ "type": "array",
1387
+ "prefixItems": [
1388
+ {
1389
+ "type": "string",
1390
+ "minLength": 1
1391
+ }
1392
+ ],
1393
+ "minItems": 1,
1394
+ "items": {
1395
+ "type": "string",
1396
+ "minLength": 1
1397
+ },
1398
+ "allOf": [
1399
+ {
1400
+ "description": "Machine names from `machines`."
1401
+ }
1402
+ ]
1403
+ },
1404
+ "range": {
1405
+ "type": "string",
1406
+ "enum": ["*", "latest"],
1407
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1408
+ }
1409
+ },
1410
+ "required": ["range"],
1411
+ "additionalProperties": false
1412
+ },
1413
+ {
1414
+ "type": "string",
1415
+ "enum": ["*", "latest"],
1416
+ "description": "\"*\" (install when missing, never upgrade) or \"latest\" (brew update, then upgrade on every Ship)"
1417
+ }
1418
+ ]
1419
+ }
601
1420
  }
602
1421
  ]
603
1422
  },
604
1423
  "allOf": [
605
1424
  {
606
- "description": "Casks, each `\"*\"` or `\"latest\"`, or `{ range, platforms?, machines? }` to target one. A tapped name (`owner/tap/name`) taps on install."
1425
+ "description": "Casks, keyed by name. Each is `\"*\"` or `\"latest\"`, `{ range, platforms?, machines? }` to target it, or a list of Variants, of which a Machine gets the first that targets it. A tapped name (`owner/tap/name`) taps on install."
607
1426
  }
608
1427
  ]
609
1428
  }