1{
2 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "$id": "https://wheelnext.dev/variants.json",
4 "title": "{name}-{version}-variants.json",
5 "description": "Combined index metadata for wheel variants",
6 "type": "object",
7 "properties": {
8 "default-priorities": {
9 "description": "Default provider priorities",
10 "type": "object",
11 "properties": {
12 "namespace": {
13 "description": "Default namespace priorities",
14 "type": "array",
15 "items": {
16 "type": "string",
17 "pattern": "^[a-z0-9_]+$"
18 },
19 "minItems": 1,
20 "uniqueItems": true
21 },
22 "feature": {
23 "description": "Default feature priorities (by namespace)",
24 "type": "object",
25 "patternProperties": {
26 "^[a-z0-9_]+$": {
27 "description": "Preferred features",
28 "type": "array",
29 "items": {
30 "type": "string",
31 "pattern": "^[a-z0-9_]+$"
32 },
33 "minItems": 0,
34 "uniqueItems": true
35 }
36 },
37 "additionalProperties": false,
38 "uniqueItems": true
39 },
40 "property": {
41 "description": "Default property priorities (by namespace)",
42 "type": "object",
43 "patternProperties": {
44 "^[a-z0-9_]+$": {
45 "description": "Default property priorities (by feature) name",
46 "type": "object",
47 "patternProperties": {
48 "^[a-z0-9_]+$": {
49 "type": "array",
50 "items": {
51 "type": "string",
52 "pattern": "^[a-z0-9_.]+$"
53 },
54 "minItems": 0,
55 "uniqueItems": true
56 }
57 },
58 "additionalProperties": false,
59 "uniqueItems": true
60 }
61 },
62 "additionalProperties": false,
63 "uniqueItems": true
64 }
65 },
66 "additionalProperties": false,
67 "uniqueItems": true,
68 "required": [
69 "namespace"
70 ]
71 },
72 "providers": {
73 "description": "Mapping of namespaces to provider information",
74 "type": "object",
75 "patternProperties": {
76 "^[A-Za-z0-9_]+$": {
77 "type": "object",
78 "description": "Provider information",
79 "properties": {
80 "plugin-api": {
81 "description": "Object reference to plugin class",
82 "type": "string",
83 "pattern": "^([a-zA-Z0-9._]+ *: *[a-zA-Z0-9._]+)|([a-zA-Z0-9._]+)$"
84 },
85 "enable-if": {
86 "description": "Environment marker specifying when to enable the plugin",
87 "type": "string",
88 "minLength": 1
89 },
90 "optional": {
91 "description": "Whether the provider is optional",
92 "type": "boolean"
93 },
94 "plugin-use": {
95 "description": "Whether a plugin is used: not at all, at build time or both at build and install time",
96 "type": "string",
97 "enum": [
98 "none",
99 "build",
100 "all"
101 ]
102 },
103 "requires": {
104 "description": "Dependency specifiers for how to install the plugin",
105 "type": "array",
106 "items": {
107 "type": "string",
108 "minLength": 1
109 },
110 "minItems": 0,
111 "uniqueItems": true
112 }
113 },
114 "additionalProperties": false,
115 "uniqueItems": true,
116 "required": [
117 "requires"
118 ]
119 }
120 },
121 "additionalProperties": false,
122 "uniqueItems": true
123 },
124 "variants": {
125 "description": "Mapping of variant labels to properties",
126 "type": "object",
127 "patternProperties": {
128 "^[a-z0-9_.]{1,16}$": {
129 "type": "object",
130 "description": "Mapping of namespaces in a variant",
131 "patternProperties": {
132 "^[a-z0-9_.]+$": {
133 "patternProperties": {
134 "^[a-z0-9_.]+$": {
135 "description": "list of possible values for this variant feature.",
136 "type": "array",
137 "items": {
138 "type": "string",
139 "pattern": "^[a-z0-9_.]+$"
140 },
141 "minItems": 1,
142 "uniqueItems": true
143 }
144 },
145 "uniqueItems": true,
146 "additionalProperties": false
147 }
148 },
149 "uniqueItems": true,
150 "additionalProperties": false
151 }
152 },
153 "additionalProperties": false,
154 "uniqueItems": true
155 }
156 },
157 "required": [
158 "default-priorities",
159 "providers",
160 "variants"
161 ],
162 "uniqueItems": true
163}