schema_index.json 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. {
  2. "$schema": "http://json-schema.org/draft-07/schema#",
  3. "type": "object",
  4. "required": [
  5. "cmake",
  6. "objects",
  7. "reply"
  8. ],
  9. "properties": {
  10. "cmake": {
  11. "type": "object",
  12. "description": "High level details about CMake itself and the CMake generator used",
  13. "required": [
  14. "version",
  15. "paths",
  16. "generator"
  17. ],
  18. "properties": {
  19. "version": {
  20. "description": "Full version details of the CMake used to produce the replies",
  21. "type": "object",
  22. "required": [
  23. "major",
  24. "minor",
  25. "patch",
  26. "string",
  27. "isDirty"
  28. ],
  29. "properties": {
  30. "major": {
  31. "type": "integer",
  32. "minimum": 3
  33. },
  34. "minor": {
  35. "type": "integer",
  36. "minimum": 0
  37. },
  38. "patch": {
  39. "type": "integer",
  40. "minimum": 0
  41. },
  42. "suffix": {
  43. "type": "string",
  44. "description": "A version suffix may be present when CMake is built from sources, or for release candidates. Official releases do not normally have a suffix."
  45. },
  46. "string": {
  47. "type": "string",
  48. "description": "The full version string in the format <major>.<minor>.<patch>[-<suffix>]"
  49. },
  50. "isDirty": {
  51. "type": "boolean",
  52. "description": "When this is true, it indicates CMake was built from a version-controlled source tree with local modifications"
  53. }
  54. },
  55. "additionalProperties": false
  56. },
  57. "paths": {
  58. "description": "Absolute paths to tools and locations within the CMake installation",
  59. "type": "object",
  60. "required": [
  61. "cmake",
  62. "ctest",
  63. "cpack",
  64. "root"
  65. ],
  66. "properties": {
  67. "cmake": {
  68. "description": "Absolute path to the cmake executable",
  69. "type": "string"
  70. },
  71. "ctest": {
  72. "description": "Absolute path to the ctest executable",
  73. "type": "string"
  74. },
  75. "cpack": {
  76. "description": "Absolute path to the cpack executable",
  77. "type": "string"
  78. },
  79. "root": {
  80. "description": "Absolute path to the directory containing CMake resources like the Modules directory",
  81. "type": "string"
  82. }
  83. },
  84. "additionalProperties": false
  85. },
  86. "generator": {
  87. "description": "Details for the CMake generator used",
  88. "type": "object",
  89. "required": [
  90. "multiConfig",
  91. "name"
  92. ],
  93. "properties": {
  94. "multiConfig": {
  95. "description": "True for multi-configuration generators, false for single-configuration generators",
  96. "type": "boolean"
  97. },
  98. "name": {
  99. "type": "string"
  100. },
  101. "platform": {
  102. "description": "This string will only be set if the generator supports the CMAKE_GENERATOR_PLATFORM variable, which specifies the generator platform name",
  103. "type": "string"
  104. }
  105. },
  106. "additionalProperties": false
  107. }
  108. }
  109. },
  110. "objects": {
  111. "type": "array",
  112. "items": {
  113. "$ref": "#/definitions/kindJsonFile"
  114. }
  115. },
  116. "reply": {
  117. "type": "object",
  118. "patternProperties": {
  119. "^[^-]+-v\\d+$": {
  120. "description": "A member of this form appears for each of the shared stateless query files that CMake recognized as a request for the specified object kind and major version",
  121. "oneOf": [
  122. {
  123. "$ref": "#/definitions/kindJsonFile"
  124. },
  125. {
  126. "description": "A member of this form appears if the query's object kind is not recognized or is malformed",
  127. "$ref": "#/definitions/replyError"
  128. }
  129. ]
  130. },
  131. "^client-[^/]+$": {
  132. "description": "A member of this form appears for each client-owned directory holding client stateless query files. The value is a JSON object mirroring the content of the query/client-<client>/ directory.",
  133. "patternProperties": {
  134. "^[^-]+-v\\d+$": {
  135. "description": "A member of this form appears for each of the client stateless query files that CMake recognized as a request for the specified object kind and major version",
  136. "oneOf": [
  137. {
  138. "$ref": "#/definitions/kindJsonFile"
  139. },
  140. {
  141. "description": "A member of this form appears if the client query's object kind is not recognized or is malformed",
  142. "$ref": "#/definitions/replyError"
  143. }
  144. ]
  145. },
  146. "^query\\.json$": {
  147. "description": "This member appears for clients using client stateful query files",
  148. "oneOf": [
  149. {
  150. "type": "object",
  151. "properties": {
  152. "client": {
  153. "type": "object"
  154. },
  155. "requests": {},
  156. "responses": {
  157. "oneOf": [
  158. {
  159. "$ref": "#/definitions/replyError"
  160. },
  161. {
  162. "type": "array",
  163. "items": {
  164. "oneOf": [
  165. {
  166. "$ref": "#/definitions/kindJsonFile"
  167. },
  168. {
  169. "$ref": "#/definitions/replyError"
  170. }
  171. ]
  172. }
  173. }
  174. ]
  175. }
  176. },
  177. "additionalProperties": false
  178. },
  179. {
  180. "description": "A member of this form appears if the query.json file failed to read or parse as a JSON object",
  181. "$ref": "#/definitions/replyError"
  182. }
  183. ]
  184. }
  185. },
  186. "additionalProperties": {
  187. "description": "A member of this form appears for each of the client stateless query files that CMake did not recognize.",
  188. "$ref": "#/definitions/replyError"
  189. }
  190. }
  191. },
  192. "additionalProperties": {
  193. "description": "A member of this form appears for each of the shared stateless query files that CMake did not recognize.",
  194. "$ref": "#/definitions/replyError"
  195. }
  196. }
  197. },
  198. "definitions": {
  199. "kindJsonFile": {
  200. "type": "object",
  201. "required": [
  202. "kind",
  203. "version",
  204. "jsonFile"
  205. ],
  206. "properties": {
  207. "kind": {
  208. "type": "string"
  209. },
  210. "version": {
  211. "type": "object",
  212. "required": [
  213. "major",
  214. "minor"
  215. ],
  216. "properties": {
  217. "major": {
  218. "type": "integer",
  219. "minimum": 1
  220. },
  221. "minor": {
  222. "type": "integer",
  223. "minimum": 0
  224. }
  225. },
  226. "additionalProperties": false
  227. },
  228. "jsonFile": {
  229. "type": "string",
  230. "description": "Specifies a path relative to the reply index file to another JSON file containing the object"
  231. }
  232. },
  233. "additionalProperties": false
  234. },
  235. "replyError": {
  236. "type": "object",
  237. "required": [
  238. "error"
  239. ],
  240. "properties": {
  241. "error": {
  242. "type": "string"
  243. }
  244. },
  245. "additionalProperties": false
  246. }
  247. }
  248. }