/ tools / tools_schema.json
tools_schema.json
  1  {
  2    "$schema": "http://json-schema.org/draft-07/schema#",
  3    "$id": "https://github.com/espressif/esp-idf/blob/master/tools/tools-schema.json",
  4    "type": "object",
  5    "properties": {
  6      "version": {
  7        "type": "integer",
  8        "description": "Metadata file version"
  9      },
 10      "tools": {
 11        "type": "array",
 12        "description": "List of tools",
 13        "items": {
 14          "$ref": "#/definitions/toolInfo"
 15        }
 16      }
 17    },
 18    "required": [
 19      "version",
 20      "tools"
 21    ],
 22    "definitions": {
 23      "toolInfo": {
 24        "type": "object",
 25        "description": "Information about one tool",
 26        "properties": {
 27          "name" : {
 28            "description": "Tool name (used as a directory name)",
 29            "type": "string"
 30          },
 31          "description" : {
 32            "description": "A short (one sentence) description of the tool.",
 33            "type": "string"
 34          },
 35          "export_paths": {
 36            "$ref": "#/definitions/exportPaths"
 37          },
 38          "export_vars": {
 39            "$ref": "#/definitions/envVars",
 40            "description": "Some variable expansions are done on the values. 1) ${TOOL_PATH} is replaced with the directory where the tool is installed."
 41          },
 42          "info_url": {
 43            "description": "URL of the page with information about the tool",
 44            "type": "string"
 45          },
 46          "install": {
 47            "$ref": "#/definitions/installRequirementInfo",
 48            "description": "If 'always', the tool will be installed by default. If 'on_request', tool will be installed when specifically requested. If 'never', tool will not be considered for installation."
 49          },
 50          "license": {
 51            "description": "License name. Use SPDX license identifier if it exists, short name of the license otherwise.",
 52            "type": "string"
 53          },
 54          "version_cmd": {
 55            "$ref": "#/definitions/arrayOfStrings",
 56            "description": "Command to be executed (along with any extra arguments). The executable be present in one of the export_paths."
 57          },
 58          "version_regex": {
 59            "description": "Regex which is to be applied to version_cmd output to extract the version. By default, the version will be the first capture group of the expression. If version_regex_replace is specified, version will be obtained by doing a substitution using version_regex_replace instead.",
 60            "$ref": "#/definitions/regex"
 61          },
 62          "version_regex_replace": {
 63            "description": "If given, this will be used as substitute expression for the regex defined in version_regex, to obtain the version string. Not specifying this is equivalent to setting it to '\\1' (i.e. return the first capture group).",
 64            "type": "string"
 65          },
 66          "strip_container_dirs": {
 67            "type": "integer",
 68            "description": "If specified, this number of top directory levels will removed when extracting. E.g. if strip_container_dirs=2, archive path a/b/c/d.txt will be extracted as c/d.txt"
 69          },
 70          "versions": {
 71            "type": "array",
 72            "description": "List of versions",
 73            "items": {
 74              "$ref": "#/definitions/versionInfo"
 75            }
 76          },
 77          "platform_overrides": {
 78            "type": "array",
 79            "description": "List of platform-specific overrides",
 80            "items": {
 81              "$ref": "#/definitions/platformOverrideInfo"
 82            }
 83          }
 84        },
 85        "required": [
 86          "description",
 87          "export_paths",
 88          "version_cmd",
 89          "version_regex",
 90          "versions",
 91          "install",
 92          "info_url",
 93          "license"
 94        ]
 95      },
 96      "arrayOfStrings": {
 97        "description": "Array of strings. Used to represent paths (split into components) and command lines (split into arguments)",
 98        "type": "array",
 99        "items": {
100          "type": "string"
101        }
102      },
103      "exportPaths": {
104        "description": "Array of paths to be exported (added to PATH). Each item in the array is relative to the directory where the tool will be installed.",
105        "type": "array",
106        "items": {
107          "$ref": "#/definitions/arrayOfStrings"
108        }
109      },
110      "envVars": {
111        "description": "Collection of environment variables. Keys and values are the environment variable names and values, respectively.",
112        "type": "object",
113        "patternProperties": {
114          "^([A-Z_0-9]+)+$": {
115            "type": "string"
116          }
117        },
118        "additionalProperties": false
119      },
120      "regex": {
121        "description": "A regular expression",
122        "type": "string"
123      },
124      "versionInfo": {
125        "type": "object",
126        "properties": {
127          "name" : {
128            "description": "Version name (used as a directory name)",
129            "type": "string"
130          },
131          "status": {
132              "description": "Determines whether the version is recommended/supported/deprecated",
133              "type": "string",
134              "enum": ["recommended", "supported", "deprecated"]
135          },
136          "linux-i686": {
137            "$ref": "#/definitions/platformDownloadInfo"
138          },
139          "linux-amd64": {
140            "$ref": "#/definitions/platformDownloadInfo"
141          },
142          "linux-armel": {
143            "$ref": "#/definitions/platformDownloadInfo"
144          },
145          "linux-arm64": {
146            "$ref": "#/definitions/platformDownloadInfo"
147          },
148          "macos": {
149            "$ref": "#/definitions/platformDownloadInfo"
150          },
151          "win32": {
152            "$ref": "#/definitions/platformDownloadInfo"
153          },
154          "win64": {
155            "$ref": "#/definitions/platformDownloadInfo"
156          },
157          "any": {
158            "$ref": "#/definitions/platformDownloadInfo"
159          }
160        }
161      },
162      "platformDownloadInfo": {
163        "description": "Information about download artifact for one platform",
164        "type": "object",
165        "properties": {
166          "sha256": {
167            "type": "string",
168            "description": "SHA256 sum of the file"
169          },
170          "size": {
171            "type": "integer",
172            "description": "Size of the file, in bytes"
173          },
174          "url": {
175            "type": "string",
176            "description": "Download URL"
177          }
178        },
179        "required": [
180          "sha256",
181          "url",
182          "size"
183        ]
184      },
185      "installRequirementInfo": {
186        "description": "If 'always', the tool will be installed by default. If 'on_request', tool will be installed when specifically requested. If 'never', tool will not be considered for installation.",
187        "type": "string",
188        "enum": ["always", "on_request", "never"]
189      },
190      "platformOverrideInfo": {
191        "description": "Platform-specific values which override the defaults",
192        "type": "object",
193        "properties": {
194          "platforms": {
195            "description": "List of platforms to which this override applies",
196            "type": "array",
197            "items": {
198              "type": "string",
199              "enum": ["linux-i686", "linux-amd64", "linux-armel", "linux-arm64", "macos", "win32", "win64"]
200            }
201          },
202          "export_paths": {
203            "description": "Platform-specific replacement for toolInfo/export_paths",
204            "$ref": "#/definitions/exportPaths"
205          },
206          "export_vars": {
207            "description": "Platform-specific replacement for toolInfo/export_vars",
208            "$ref": "#/definitions/envVars"
209          },
210          "install": {
211            "description": "Platform-specific replacement for toolInfo/install",
212            "$ref": "#/definitions/installRequirementInfo"
213          },
214          "version_cmd": {
215            "description": "Platform-specific replacement for toolInfo/version_cmd",
216            "$ref": "#/definitions/arrayOfStrings"
217          },
218          "version_regex": {
219            "description": "Platform-specific replacement for toolInfo/version_regex",
220            "$ref": "#/definitions/regex"
221          },
222          "version_regex_replace": {
223            "description": "Platform-specific replacement for toolInfo/version_regex_replace",
224            "type": "string"
225          },
226          "strip_container_dirs": {
227            "type": "string",
228            "description": "Platform-specific replacement for toolInfo/strip_container_dirs"
229          }
230        },
231        "required": ["platforms"]
232      }
233    }
234  }