diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 3afb1a3eeeb..570cdd5834e 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -2,6 +2,17 @@ "$schema": "https://json.schemastore.org/schema-catalog.json", "version": 1, "schemas": [ + { + "name": "revola.json", + "description": "Configuration file for Revola", + "fileMatch": [ + ".revola.json", + ".revola.config.json", + "revola.json", + "revola.config.json" + ], + "url": "https://www.schemastore.org/revola.json" + }, { "name": "Hashgraph Online Skill Manifest", "description": "Manifest for Hashgraph Online Registry Broker skill packages", @@ -2790,6 +2801,12 @@ "fileMatch": ["eas.json"], "url": "https://raw.githubusercontent.com/expo/eas-cli/main/packages/eas-json/schema/eas.schema.json" }, + { + "name": "Expoot app config", + "description": "The config for creating a React Native Desktop app with best-effort Expo support, used by the create-expoot CLI", + "fileMatch": ["expoot-app.json"], + "url": "https://raw.githubusercontent.com/shirakaba/expoot/main/packages/create-expoot/schemas/app-config.json" + }, { "name": "EasyVCR .NET", "description": "EasyVCR .NET recording file", @@ -5827,6 +5844,12 @@ "fileMatch": ["rustfmt.toml"], "url": "https://www.schemastore.org/rustfmt.json" }, + { + "name": "ryl", + "description": "ryl, a fast YAML linter written in Rust", + "fileMatch": ["ryl.toml", ".ryl.toml"], + "url": "https://www.schemastore.org/ryl.json" + }, { "name": "Rust toolchain", "description": "A declarative managing the Rust toolchain", diff --git a/src/negative_test/revola/preset.json b/src/negative_test/revola/preset.json new file mode 100644 index 00000000000..e4195c2cb92 --- /dev/null +++ b/src/negative_test/revola/preset.json @@ -0,0 +1,3 @@ +{ + "preset": ["node", "node"] +} diff --git a/src/negative_test/revola/revola.json b/src/negative_test/revola/revola.json new file mode 100644 index 00000000000..5e663d72952 --- /dev/null +++ b/src/negative_test/revola/revola.json @@ -0,0 +1,39 @@ +{ + "changelog": { + "enabled": "true", + "includeTypes": ["invalid-type"] + }, + "extraField": true, + "git": { + "author": { + "email": "invalid-email", + "name": 123 + }, + "cleanWorkingDirectory": "yes", + "unknown": true + }, + "hooks": { + "after:init": [""], + "before:init": "", + "invalid:hook": "" + }, + "jsr": { + "packageManager": "npm", + "publishArgs": ["--invalid-flag"] + }, + "logLevel": "verbose", + "npm": { + "access": "private", + "packageManager": "pip", + "publish": "yes", + "registry": "not-a-url" + }, + "plugins": { + "": "invalid" + }, + "preset": "go", + "version": { + "extra": true, + "strategy": "invalid" + } +} diff --git a/src/negative_test/ryl/01-invalid.toml b/src/negative_test/ryl/01-invalid.toml new file mode 100644 index 00000000000..3ffc455197b --- /dev/null +++ b/src/negative_test/ryl/01-invalid.toml @@ -0,0 +1,3 @@ +#:schema ../../schemas/json/ryl.json +[rules.comments] +require-starting-space = "yes" diff --git a/src/negative_test/vhwdebugger-binding-schema/isystem_with_tasking_key.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/isystem_with_tasking_key.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..9333bd058f0 --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/isystem_with_tasking_key.vhwdebugger-binding.yaml @@ -0,0 +1,10 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + MyDebugger1: + type: isystem + node: localhost + port: 1234 + tasking: + disable-winidea-polling: true diff --git a/src/negative_test/vhwdebugger-binding-schema/segger_just_port.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/segger_just_port.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..928b31965a7 --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/segger_just_port.vhwdebugger-binding.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + debugger1: + type: segger-jlink + port: 1234 + segger-jlink: + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD diff --git a/src/negative_test/vhwdebugger-binding-schema/segger_node_and_serial.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/segger_node_and_serial.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..4cb8da5c19a --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/segger_node_and_serial.vhwdebugger-binding.yaml @@ -0,0 +1,12 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + debugger1: + type: segger-jlink + node: localhost + segger-jlink: + serial-number: '852012345' + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD diff --git a/src/negative_test/vhwdebugger-binding-schema/segger_node_port_and_serial.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/segger_node_port_and_serial.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..ff34c3da535 --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/segger_node_port_and_serial.vhwdebugger-binding.yaml @@ -0,0 +1,13 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + debugger1: + type: segger-jlink + node: localhost + port: 1234 + segger-jlink: + serial-number: '852012345' + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD diff --git a/src/negative_test/vhwdebugger-binding-schema/segger_port_and_serial.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/segger_port_and_serial.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..73fb5127867 --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/segger_port_and_serial.vhwdebugger-binding.yaml @@ -0,0 +1,12 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + debugger1: + type: segger-jlink + port: 1234 + segger-jlink: + serial-number: '852012345' + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD diff --git a/src/negative_test/vhwdebugger-binding-schema/tasking_with_isystem_key.vhwdebugger-binding.yaml b/src/negative_test/vhwdebugger-binding-schema/tasking_with_isystem_key.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..1603187f324 --- /dev/null +++ b/src/negative_test/vhwdebugger-binding-schema/tasking_with_isystem_key.vhwdebugger-binding.yaml @@ -0,0 +1,10 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +debuggers: + MyDebugger1: + type: tasking + node: localhost + port: 1234 + isystem: + disable-winidea-polling: true diff --git a/src/schemas/json/revola.json b/src/schemas/json/revola.json new file mode 100644 index 00000000000..72fd4a2d7da --- /dev/null +++ b/src/schemas/json/revola.json @@ -0,0 +1,409 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://www.schemastore.org/revola.json", + "type": "object", + "properties": { + "$schema": { + "default": "https://cdn.jsdelivr.net/npm/revola@0.1.0/schema.json", + "description": "Path to the JSON schema for IDE autocompletion.", + "type": "string", + "format": "uri" + }, + "logLevel": { + "default": "info", + "description": "Controls the verbosity of Revola logging output.", + "type": "string", + "enum": [ + "trace", + "debug", + "info", + "success", + "warn", + "error", + "fatal", + "silent" + ] + }, + "preset": { + "default": "node", + "description": "Preset configuration allowing a single value or a unique array values.", + "anyOf": [ + { + "type": "string", + "enum": ["node", "deno", "git"] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": ["node", "deno"] + }, + "uniqueItems": true + } + ] + }, + "version": { + "default": { + "strategy": "semver", + "defaultBump": "patch" + }, + "type": "object", + "properties": { + "strategy": { + "default": "semver", + "description": "Determines how the next version is calculated.", + "type": "string", + "enum": ["semver"] + }, + "defaultBump": { + "default": "patch", + "description": "The default level to bump the version when using the \"semver\" strategy.", + "type": "string" + } + }, + "additionalProperties": false, + "description": "Configuration for versioning behavior." + }, + "git": { + "default": { + "cleanWorkingDirectory": true, + "upstream": true, + "author": { + "name": "github-actions[bot]", + "email": "41898282+github-actions[bot]@users.noreply.github.com" + }, + "targetBranch": "main", + "add": true, + "commit": true, + "commitMessage": "Release {{REVOLA_VERSION}}", + "push": true, + "tag": true, + "tagFormat": "v{{REVOLA_VERSION}}", + "tagAnnotation": "Release {{REVOLA_VERSION}}", + "tagMajor": false, + "tagMinor": false + }, + "type": "object", + "properties": { + "cleanWorkingDirectory": { + "default": true, + "description": "If true, Revola will check for a clean working directory before performing versioning operations.", + "type": "boolean" + }, + "upstream": { + "default": true, + "description": "If true, Revola will check for an upstream branch and push to it by default when pushing new versions.", + "type": "boolean" + }, + "author": { + "default": { + "name": "github-actions[bot]", + "email": "41898282+github-actions[bot]@users.noreply.github.com" + }, + "type": "object", + "properties": { + "name": { + "default": "github-actions[bot]", + "description": "Name to use for release commits.", + "type": "string" + }, + "email": { + "default": "41898282+github-actions[bot]@users.noreply.github.com", + "description": "Email to use for release commits.", + "type": "string", + "format": "email", + "pattern": "^[^\\s@\"]{1,64}@[^\\s@]{1,255}$" + } + }, + "additionalProperties": false, + "description": "Overrides Git author identity ONLY for release commits (does not modify global Git config)." + }, + "targetBranch": { + "default": "main", + "description": "The branch on which to perform versioning operations.", + "type": "string" + }, + "add": { + "default": true, + "description": "If true, Revola will stage all changes before committing the new version.", + "type": "boolean" + }, + "commit": { + "default": true, + "description": "If true, Revola will commit the new version.", + "type": "boolean" + }, + "commitMessage": { + "default": "Release {{REVOLA_VERSION}}", + "type": "string" + }, + "push": { + "default": true, + "description": "If true, Revola will push the new version to the remote repository.", + "type": "boolean" + }, + "tag": { + "default": true, + "description": "If true, Revola will create a Git tag for the new version (e.g: v1.2.3).", + "type": "boolean" + }, + "tagFormat": { + "default": "v{{REVOLA_VERSION}}", + "description": "Template for Git tag names.", + "type": "string" + }, + "tagAnnotation": { + "default": "Release {{REVOLA_VERSION}}", + "description": "The annotation to use for Git tags created by Revola.", + "type": "string" + }, + "tagMajor": { + "default": false, + "description": "If true, Revola will create a Git tag for major version releases (e.g: v1.2.3 -> v1).", + "type": "boolean" + }, + "tagMinor": { + "default": false, + "description": "If true, Revola will create a Git tag for minor version releases (e.g: v1.2.3 -> v1.2).", + "type": "boolean" + } + }, + "additionalProperties": false, + "description": "Configuration for Git-related settings in Revola." + }, + "npm": { + "default": { + "publish": true, + "registry": "https://registry.npmjs.org/", + "tokenRef": "NPM_TOKEN", + "packageManager": "npm", + "tag": "latest", + "access": "public", + "provenance": false + }, + "type": "object", + "properties": { + "publish": { + "default": true, + "description": "Whether to publish to npm.", + "type": "boolean" + }, + "registry": { + "default": "https://registry.npmjs.org/", + "description": "The npm registry URL to publish to.", + "type": "string", + "format": "uri" + }, + "tokenRef": { + "default": "NPM_TOKEN", + "description": "Environment variable name that holds the registry auth token.", + "type": "string" + }, + "packageManager": { + "default": "npm", + "description": "The package manager used to invoke the npm publish command.", + "type": "string", + "enum": ["npm", "pnpm", "yarn", "bun"] + }, + "tag": { + "default": "latest", + "description": "The dist-tag to publish under (e.g. latest, next, beta).", + "type": "string" + }, + "access": { + "default": "public", + "description": "Package access level on npm.", + "type": "string", + "enum": ["public", "restricted"] + }, + "provenance": { + "default": false, + "description": "Whether to publish with npm provenance (requires CI environment).", + "type": "boolean" + } + }, + "additionalProperties": false, + "description": "npm publish configuration" + }, + "jsr": { + "default": { + "publish": false, + "tokenRef": "JSR_TOKEN", + "packageManager": "npx" + }, + "type": "object", + "properties": { + "publish": { + "default": false, + "description": "Whether to publish to JSR.", + "type": "boolean" + }, + "publishArgs": { + "type": "array", + "items": { + "type": "string", + "enum": ["--allow-dirty", "--allow-slow-types", "--no-provenance"] + }, + "uniqueItems": true, + "description": "Additional arguments to pass to the JSR publish command." + }, + "tokenRef": { + "default": "JSR_TOKEN", + "description": "Environment variable name that holds the registry auth token (e.g. \"JSR_TOKEN\").", + "type": "string" + }, + "packageManager": { + "default": "npx", + "description": "The package manager used to invoke the JSR publish command.", + "type": "string", + "enum": ["deno", "npx"] + } + }, + "additionalProperties": false, + "description": "jsr publish configuration" + }, + "changelog": { + "default": { + "enabled": true, + "file": "CHANGELOG.md", + "title": "{{REVOLA_VERSION}} ({{REVOLA_DATE}})", + "includeTypes": [ + "BREAKING CHANGE", + "feat", + "fix", + "perf", + "refactor", + "docs", + "deps", + "ci", + "chore" + ] + }, + "type": "object", + "properties": { + "enabled": { + "default": true, + "description": "Whether to generate/update the changelog.", + "type": "boolean" + }, + "file": { + "default": "CHANGELOG.md", + "description": "Path to the changelog file.", + "type": "string" + }, + "title": { + "default": "{{REVOLA_VERSION}} ({{REVOLA_DATE}})", + "description": "Template for release title.", + "type": "string" + }, + "includeTypes": { + "default": [ + "BREAKING CHANGE", + "feat", + "fix", + "perf", + "refactor", + "docs", + "deps", + "ci", + "chore" + ], + "description": "List of commit types to include in the changelog. If empty or not provided, all commit types are included. The order matters and determines how sections are organized in the final changelog.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "feat", + "fix", + "docs", + "style", + "refactor", + "perf", + "test", + "build", + "ci", + "chore", + "revert", + "deps", + "config", + "security", + "types", + "lint", + "format", + "release", + "meta", + "infra", + "hotfix", + "version", + "workflow", + "package", + "workspace", + "api", + "BREAKING CHANGE", + "db", + "data", + "ui", + "ux", + "accessibility", + "backend", + "frontend", + "logging", + "monitoring", + "stability", + "optimization", + "dx", + "tooling", + "scripts", + "cleanup", + "migration", + "rollback" + ] + }, + "uniqueItems": true + } + }, + "additionalProperties": false, + "description": "Changelog configuration" + }, + "hooks": { + "type": "object", + "propertyNames": { + "type": "string", + "pattern": "^(before|after):(init|version|git|publish|changelog)$" + }, + "additionalProperties": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "minItems": 1, + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + } + ] + }, + "description": "Shell commands to run at various lifecycle stages. Each key is a lifecycle hook name and the value is the command(s) to run." + }, + "plugins": { + "type": "object", + "propertyNames": { + "type": "string", + "minLength": 1 + }, + "additionalProperties": { + "type": "object", + "properties": {}, + "additionalProperties": {} + }, + "description": "Defines plugins where each key is a plugin name and the value is its configuration object." + } + }, + "additionalProperties": false, + "title": "Revola Configuration", + "description": "Configuration file for Revola" +} diff --git a/src/schemas/json/ryl.json b/src/schemas/json/ryl.json new file mode 100644 index 00000000000..837536e8dd7 --- /dev/null +++ b/src/schemas/json/ryl.json @@ -0,0 +1,1623 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://json.schemastore.org/ryl.json", + "definitions": { + "FixRuleName": { + "description": "A fixable rule name accepted by `fix.unfixable`.", + "enum": [ + "braces", + "brackets", + "commas", + "comments", + "comments-indentation", + "new-line-at-end-of-file", + "new-lines" + ], + "type": "string" + }, + "FixTable": { + "additionalProperties": false, + "description": "TOML `[fix]` table.", + "properties": { + "fixable": { + "items": { + "$ref": "#/definitions/FixableRuleSelector" + }, + "type": ["array", "null"] + }, + "unfixable": { + "items": { + "$ref": "#/definitions/FixRuleName" + }, + "type": ["array", "null"] + } + }, + "type": "object" + }, + "FixableRuleSelector": { + "description": "A rule selector accepted by `fix.fixable`.", + "enum": [ + "ALL", + "braces", + "brackets", + "commas", + "comments", + "comments-indentation", + "new-line-at-end-of-file", + "new-lines" + ], + "type": "string" + }, + "ForbidMode": { + "enum": ["non-empty"], + "type": "string" + }, + "ForbidSetting": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/ForbidMode" + } + ] + }, + "IndentSequencesMode": { + "enum": ["whatever", "consistent"], + "type": "string" + }, + "IndentSequencesSetting": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/IndentSequencesMode" + } + ] + }, + "NewLinesType": { + "enum": ["unix", "dos", "platform"], + "type": "string" + }, + "QuoteType": { + "enum": ["any", "single", "double"], + "type": "string" + }, + "QuotedStringsRequired": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/QuotedStringsRequiredMode" + } + ] + }, + "QuotedStringsRequiredMode": { + "enum": ["only-when-needed"], + "type": "string" + }, + "RuleEntryForAnchorsOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForAnchorsOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForBraceLikeOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForBraceLikeOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForColonsOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForColonsOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForCommasOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForCommasOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForCommentsOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForCommentsOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForDocumentPresenceOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForDocumentPresenceOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForEmptyLinesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForEmptyLinesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForEmptyValuesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForEmptyValuesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForFloatValuesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForFloatValuesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForHyphensOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForHyphensOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForIndentationOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForIndentationOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForKeyDuplicatesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForKeyDuplicatesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForKeyOrderingOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForKeyOrderingOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForLineLengthOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForLineLengthOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForNewLinesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForNewLinesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForNoOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForNoOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForOctalValuesOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForOctalValuesOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForQuotedStringsOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForQuotedStringsOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleEntryForTruthyOptions": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/RuleSwitch" + }, + { + "$ref": "#/definitions/RuleOptionsForTruthyOptions" + } + ], + "description": "Common rule entry shape used by TOML config." + }, + "RuleLevel": { + "description": "Rule severity override.", + "enum": ["error", "warning"], + "type": "string" + }, + "RuleOptionsForAnchorsOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid-duplicated-anchors": { + "type": ["boolean", "null"] + }, + "forbid-undeclared-aliases": { + "type": ["boolean", "null"] + }, + "forbid-unused-anchors": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForBraceLikeOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid": { + "anyOf": [ + { + "$ref": "#/definitions/ForbidSetting" + }, + { + "type": "null" + } + ] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max-spaces-inside": { + "type": ["integer", "null"] + }, + "max-spaces-inside-empty": { + "type": ["integer", "null"] + }, + "min-spaces-inside": { + "type": ["integer", "null"] + }, + "min-spaces-inside-empty": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForColonsOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max-spaces-after": { + "type": ["integer", "null"] + }, + "max-spaces-before": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForCommasOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max-spaces-after": { + "type": ["integer", "null"] + }, + "max-spaces-before": { + "type": ["integer", "null"] + }, + "min-spaces-after": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForCommentsOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-shebangs": { + "type": ["boolean", "null"] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "min-spaces-from-content": { + "type": ["integer", "null"] + }, + "require-starting-space": { + "type": ["boolean", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForDocumentPresenceOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "present": { + "type": ["boolean", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForEmptyLinesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max": { + "type": ["integer", "null"] + }, + "max-end": { + "type": ["integer", "null"] + }, + "max-start": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForEmptyValuesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid-in-block-mappings": { + "type": ["boolean", "null"] + }, + "forbid-in-block-sequences": { + "type": ["boolean", "null"] + }, + "forbid-in-flow-mappings": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForFloatValuesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid-inf": { + "type": ["boolean", "null"] + }, + "forbid-nan": { + "type": ["boolean", "null"] + }, + "forbid-scientific-notation": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "require-numeral-before-decimal": { + "type": ["boolean", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForHyphensOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max-spaces-after": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForIndentationOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "check-multi-line-strings": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "indent-sequences": { + "anyOf": [ + { + "$ref": "#/definitions/IndentSequencesSetting" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "spaces": { + "anyOf": [ + { + "$ref": "#/definitions/SpacesSetting" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForKeyDuplicatesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid-duplicated-merge-keys": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForKeyOrderingOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignored-keys": { + "items": { + "type": "string" + }, + "type": ["array", "null"] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForLineLengthOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "allow-non-breakable-inline-mappings": { + "type": ["boolean", "null"] + }, + "allow-non-breakable-words": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "max": { + "type": ["integer", "null"] + } + }, + "type": "object" + }, + "RuleOptionsForNewLinesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "type": { + "anyOf": [ + { + "$ref": "#/definitions/NewLinesType" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForNoOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForOctalValuesOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "forbid-explicit-octal": { + "type": ["boolean", "null"] + }, + "forbid-implicit-octal": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForQuotedStringsOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "allow-quoted-quotes": { + "type": ["boolean", "null"] + }, + "check-keys": { + "type": ["boolean", "null"] + }, + "extra-allowed": { + "items": { + "type": "string" + }, + "type": ["array", "null"] + }, + "extra-required": { + "items": { + "type": "string" + }, + "type": ["array", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + }, + "quote-type": { + "anyOf": [ + { + "$ref": "#/definitions/QuoteType" + }, + { + "type": "null" + } + ] + }, + "required": { + "anyOf": [ + { + "$ref": "#/definitions/QuotedStringsRequired" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleOptionsForTruthyOptions": { + "additionalProperties": false, + "description": "Common rule fields plus rule-specific options.", + "properties": { + "allowed-values": { + "items": { + "$ref": "#/definitions/TruthyAllowedValue" + }, + "type": ["array", "null"] + }, + "check-keys": { + "type": ["boolean", "null"] + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ] + }, + "level": { + "anyOf": [ + { + "$ref": "#/definitions/RuleLevel" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "RuleSwitch": { + "description": "Shorthand rule enable/disable syntax.", + "enum": ["enable", "disable"], + "type": "string" + }, + "RulesTable": { + "description": "Built-in rule table for TOML config.", + "properties": { + "anchors": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForAnchorsOptions" + }, + { + "type": "null" + } + ] + }, + "braces": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForBraceLikeOptions" + }, + { + "type": "null" + } + ] + }, + "brackets": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForBraceLikeOptions" + }, + { + "type": "null" + } + ] + }, + "colons": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForColonsOptions" + }, + { + "type": "null" + } + ] + }, + "commas": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForCommasOptions" + }, + { + "type": "null" + } + ] + }, + "comments": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForCommentsOptions" + }, + { + "type": "null" + } + ] + }, + "comments-indentation": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForNoOptions" + }, + { + "type": "null" + } + ] + }, + "document-end": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForDocumentPresenceOptions" + }, + { + "type": "null" + } + ] + }, + "document-start": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForDocumentPresenceOptions" + }, + { + "type": "null" + } + ] + }, + "empty-lines": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForEmptyLinesOptions" + }, + { + "type": "null" + } + ] + }, + "empty-values": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForEmptyValuesOptions" + }, + { + "type": "null" + } + ] + }, + "float-values": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForFloatValuesOptions" + }, + { + "type": "null" + } + ] + }, + "hyphens": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForHyphensOptions" + }, + { + "type": "null" + } + ] + }, + "indentation": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForIndentationOptions" + }, + { + "type": "null" + } + ] + }, + "key-duplicates": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForKeyDuplicatesOptions" + }, + { + "type": "null" + } + ] + }, + "key-ordering": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForKeyOrderingOptions" + }, + { + "type": "null" + } + ] + }, + "line-length": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForLineLengthOptions" + }, + { + "type": "null" + } + ] + }, + "new-line-at-end-of-file": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForNoOptions" + }, + { + "type": "null" + } + ] + }, + "new-lines": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForNewLinesOptions" + }, + { + "type": "null" + } + ] + }, + "octal-values": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForOctalValuesOptions" + }, + { + "type": "null" + } + ] + }, + "quoted-strings": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForQuotedStringsOptions" + }, + { + "type": "null" + } + ] + }, + "trailing-spaces": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForNoOptions" + }, + { + "type": "null" + } + ] + }, + "truthy": { + "anyOf": [ + { + "$ref": "#/definitions/RuleEntryForTruthyOptions" + }, + { + "type": "null" + } + ] + } + }, + "type": "object" + }, + "SpacesMode": { + "enum": ["consistent"], + "type": "string" + }, + "SpacesSetting": { + "anyOf": [ + { + "type": "integer" + }, + { + "$ref": "#/definitions/SpacesMode" + } + ] + }, + "StringOrVec": { + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "A TOML field that accepts either one string or a list of strings." + }, + "TruthyAllowedValue": { + "enum": [ + "YES", + "Yes", + "yes", + "NO", + "No", + "no", + "TRUE", + "True", + "true", + "FALSE", + "False", + "false", + "ON", + "On", + "on", + "OFF", + "Off", + "off" + ], + "type": "string" + } + }, + "description": "JSON Schema root for `ryl` TOML configuration.", + "properties": { + "fix": { + "anyOf": [ + { + "$ref": "#/definitions/FixTable" + }, + { + "type": "null" + } + ], + "description": "Native fix policy, available only in TOML config." + }, + "ignore": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ], + "description": "Ignore patterns, either as one multi-line string or a list of patterns." + }, + "ignore-from-file": { + "anyOf": [ + { + "$ref": "#/definitions/StringOrVec" + }, + { + "type": "null" + } + ], + "description": "Paths to files that contain ignore patterns." + }, + "locale": { + "description": "Locale identifier used by diagnostics.", + "type": ["string", "null"] + }, + "rules": { + "anyOf": [ + { + "$ref": "#/definitions/RulesTable" + }, + { + "type": "null" + } + ], + "description": "Rule configuration table." + }, + "yaml-files": { + "description": "Glob patterns used to identify YAML files while scanning directories.", + "items": { + "type": "string" + }, + "type": ["array", "null"] + } + }, + "title": "ryl TOML config", + "type": "object" +} diff --git a/src/schemas/json/vhwdebugger-binding-schema.json b/src/schemas/json/vhwdebugger-binding-schema.json index 9bf383e6ca4..73ff1e8c206 100644 --- a/src/schemas/json/vhwdebugger-binding-schema.json +++ b/src/schemas/json/vhwdebugger-binding-schema.json @@ -1,9 +1,9 @@ { "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://json.schemastore.org/vhwdebugger-binding-schema.json", - "$ref": "#/definitions/7d459/full", - "title": "Vector CANoe Hardware Debugger Binding Configuration Schema", + "$ref": "#/definitions/20a6a/full", "type": "object", + "title": "Vector CANoe Hardware Debugger Binding Configuration Schema", "definitions": { "b06cc": { "full": { @@ -490,13 +490,16 @@ } } }, - "7d459": { + "20a6a": { "full": { "$schema": "http://json-schema.org/draft-07/schema#", "title": "Vector CANoe Hardware Debugger Binding Configuration Schema", "description": "Schema for the debugger configuration of the Vector CANoe hardware debugger binding", "type": "object", "oneOf": [ + { + "$ref": "#/definitions/0cfa1/full" + }, { "$ref": "#/definitions/b06cc/full" }, @@ -505,6 +508,692 @@ } ] } + }, + "0cfa1": { + "full": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "title": "Debugger Configuration Version 1.2", + "description": "Debugger configuration for the Vector CANoe hardware debugger binding (version 1.2)", + "additionalProperties": false, + "required": ["version", "debuggers"], + "properties": { + "version": { + "title": "Version", + "description": "The version of the configuration. Controls what features are available", + "type": "string", + "const": "1.2" + }, + "default-debugger": { + "title": "Default Debugger", + "description": "The default debugger if a distributed object is not assigned explicitly. Must reference an element from the `debuggers` list", + "type": "string", + "pattern": "^[-_a-zA-Z0-9]+$" + }, + "debuggers": { + "title": "Debugger Configurations", + "description": "List of all configured debuggers. The elements' key determines the name of the debugger", + "type": "object", + "additionalProperties": false, + "minProperties": 1, + "patternProperties": { + "^[-_a-zA-Z0-9]+$": { + "oneOf": [ + { + "title": "Debugger Configuration (Lauterbach)", + "description": "Debugger Configuration for TRACE32 (Lauterbach)", + "type": "object", + "additionalProperties": false, + "required": ["type", "node", "port"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "lauterbach" + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the TRACE32 instance on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "node": { + "title": "Node Address", + "description": "The IP address of the node where the TRACE32 instance is running", + "type": "string", + "examples": ["localhost", "192.168.0.1"] + }, + "port": { + "title": "Node Port", + "description": "The port on which the TRACE32 instance is listening.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "examples": [5315, 20000] + }, + "lauterbach": { + "title": "Lauterbach TRACE32 Settings", + "description": "Debugger specific settings for TRACE32 (Lauterbach)", + "type": "object", + "additionalProperties": false, + "properties": { + "pack-len": { + "title": "TRACE32 Package Length", + "description": "The UDP package length. Must match the package length configured for the TRACE32 instance", + "type": "integer", + "minimum": 0, + "maximum": 1024, + "default": 1024 + } + } + } + }, + "examples": [ + { + "type": "lauterbach", + "node": "localhost", + "port": 20000 + }, + { + "type": "lauterbach", + "node": "localhost", + "port": 20000, + "run": true, + "reset": true, + "lauterbach": { + "pack-len": 512 + } + } + ] + }, + { + "$comment": "DO NOT ADD NEW FIELDS TO, OR EXTEND EXISTING FIELDS OF THIS ENTRY. This entry is deprecated.", + "title": "DEPRECATED Debugger Configuration (iSYSTEM)", + "description": "DEPRECATED Debugger Configuration for winIDEA (iSYSTEM). Replaced by the 'Debugger Configuration (TASKING winIDEA)''.", + "type": "object", + "additionalProperties": false, + "required": ["type", "node", "port"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "isystem" + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the winIDEA instance on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "node": { + "title": "Node Address", + "description": "The IP address of the node where the winIDEA instance is running", + "type": "string", + "examples": ["localhost", "192.168.0.1"] + }, + "port": { + "title": "Node Port", + "description": "The port on which the winIDEA instance is listening.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "examples": [5315, 20000] + }, + "isystem": { + "title": "iSYSTEM winIDEA Settings", + "description": "Debugger specific settings for winIDEA (iSYSTEM)", + "type": "object", + "additionalProperties": false, + "properties": { + "disable-winidea-polling": { + "title": "Disable winIDEA GUI Polling", + "description": "Disables the polling of the winIDEA GUI. When set to `true`, it can reduce jitter when communicating with the SIL Adapter on the target. Makes interactive work with the GUI not possible", + "type": "boolean", + "default": false + } + } + } + }, + "examples": [ + { + "type": "isystem", + "node": "localhost", + "port": 5315 + }, + { + "type": "isystem", + "node": "localhost", + "port": 5315, + "run": true, + "reset": true, + "isystem": { + "disable-winidea-polling": true + } + } + ] + }, + { + "title": "Debugger Configuration (TASKING winIDEA)", + "description": "Debugger Configuration for TASKING winIDEA", + "type": "object", + "additionalProperties": false, + "required": ["type", "node", "port"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "tasking" + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the winIDEA instance on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "node": { + "title": "Node Address", + "description": "The IP address of the node where the winIDEA instance is running", + "type": "string", + "examples": ["localhost", "192.168.0.1"] + }, + "port": { + "title": "Node Port", + "description": "The port on which the winIDEA instance is listening.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "examples": [5315, 20000] + }, + "tasking": { + "title": "TASKING winIDEA Settings", + "description": "Debugger specific settings for TASKING winIDEA", + "type": "object", + "additionalProperties": false, + "properties": { + "disable-winidea-polling": { + "title": "Disable winIDEA GUI Polling", + "description": "Disables the polling of the winIDEA GUI. When set to `true`, it can reduce jitter when communicating with the SIL Adapter on the target. Makes interactive work with the GUI not possible", + "type": "boolean", + "default": false + } + } + } + }, + "examples": [ + { + "type": "tasking", + "node": "localhost", + "port": 5315 + }, + { + "type": "tasking", + "node": "localhost", + "port": 5315, + "run": true, + "reset": true, + "tasking": { + "disable-winidea-polling": true + } + } + ] + }, + { + "title": "Debugger Configuration (GDB)", + "description": "Debugger Configuration for GDB", + "type": "object", + "additionalProperties": false, + "required": ["type", "node", "port", "run", "gdb"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "gdb" + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must always be true for GDB", + "type": "boolean", + "const": true + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the GDB server on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "node": { + "title": "Node Address", + "description": "The IP address of the node where the GDB server is running", + "type": "string", + "examples": ["localhost", "192.168.0.1"] + }, + "port": { + "title": "Node Port", + "description": "The port on which the GDB server is listening.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "examples": [5315, 20000] + }, + "gdb": { + "title": "GDB Settings", + "description": "Debugger specific settings for GDB", + "type": "object", + "additionalProperties": false, + "required": [ + "path-to-gdb-client", + "path-to-symbol-file" + ], + "properties": { + "path-to-gdb-client": { + "title": "GDB Client", + "description": "Absolute or relative path to the GDB client, which shall be used by CANoe. Path is relative to this configuration file. This is usually supplied with the compiler toolset", + "type": "string", + "minLength": 1, + "examples": [ + "gdb.exe", + "C:/Program Files (x86)/Arm GNU Toolchain arm-none-eabi/bin/arm-none-eabi-gdb.exe" + ] + }, + "path-to-symbol-file": { + "title": "GDB Symbol File", + "description": "Absolute or relative path to the symbol file, which shall be used by GDB. Path is relative to this configuration file. Symbol file must match to the binary running on the target", + "type": "string", + "minLength": 1, + "examples": ["MyBinary.elf", "MyBinarySymbols.elf"] + } + } + } + }, + "examples": [ + { + "type": "gdb", + "node": "localhost", + "port": 1234, + "run": true, + "gdb": { + "path-to-gdb-client": "path/to/gdb.exe", + "path-to-symbol-file": "path/to/Symbols.elf" + } + }, + { + "type": "gdb", + "node": "localhost", + "port": 1234, + "run": true, + "reset": true, + "gdb": { + "path-to-gdb-client": "path/to/gdb.exe", + "path-to-symbol-file": "path/to/Symbols.elf" + } + } + ] + }, + { + "title": "Debugger Configuration (SEGGER J-Link over TCP/IP)", + "description": "Debugger Configuration for SEGGER J-Link over TCP/IP", + "type": "object", + "additionalProperties": false, + "required": ["type", "node", "segger-jlink"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "segger-jlink" + }, + "node": { + "title": "Debugger Address", + "description": "The hostname or IP address of the SEGGER J-Link debugger.", + "type": "string", + "examples": [ + "jlink-pro.debuggers.example.com", + "192.168.0.1", + "852012345" + ] + }, + "port": { + "title": "Debugger Port", + "description": "The port on which the SEGGER J-Link is listening. Using value 0 will use the default port.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0, + "examples": [19020] + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the SEGGER J-Link instance on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "segger-jlink": { + "title": "SEGGER J-Link Settings", + "description": "Debugger specific settings for SEGGER J-Link", + "type": "object", + "additionalProperties": false, + "required": [ + "path-to-symbol-file", + "device", + "target-interface" + ], + "properties": { + "path-to-symbol-file": { + "title": "Symbol File", + "description": "Absolute or relative path to the symbol file. Path is relative to this configuration file. Symbol file must match to the binary running on the target.", + "type": "string", + "minLength": 1, + "examples": ["MyBinary.elf", "MyBinarySymbols.elf"] + }, + "device": { + "title": "Device", + "description": "The device name of the target as specified by the list of supported devices on the SEGGER website. The device will be selected by executing the `device = ...` Command String. See [Supported Devices](https://www.segger.com/supported-devices) for more.", + "type": "string", + "minLength": 1, + "examples": ["RP2040_M0_0", "STM32H723VE"] + }, + "target-interface": { + "title": "Target Interface", + "description": "The target interface the SEGGER J-Link will use to connect to the device.", + "type": "string", + "oneOf": [ + { + "const": "SWD", + "title": "SWD Target Interface", + "description": "Instructs the debugger to use the Serial Wire Debug (SWD) interface to connect to the device." + }, + { + "const": "JTAG", + "title": "JTAG Target Interface", + "description": "Instructs the debugger to use the Joint Test Action Group (JTAG) interface to connect to the device." + } + ] + }, + "speed": { + "title": "Target Interface Speed", + "description": "The speed at which the SEGGER J-Link will connect to the device over the target interface in kHz. The value 0 will instruct the SEGGER J-Link to autodetect the speed. The value 65535 will instruct the SEGGER J-Link to use adaptive clocking.", + "type": "number", + "minimum": 0, + "maximum": 65535, + "default": 0, + "examples": [2000, 4000] + }, + "jlink-dll-path": { + "title": "Path to the JLinkARM.dll or JLink_x64.dll", + "description": "Absolute or relative path to the DLL file. Path is relative to this configuration file. If not present, an attempt to automatically find an installed JLink DLL is made. The bitness (32 / 64) of the selected DLL must match the runtime kernel bitness, otherwise loading the DLL will fail.", + "type": "string", + "minLength": 1, + "examples": [ + "D:\\Debugger\\SEGGER\\JLink_V884\\JLink_x64.dll", + "JLinkARM-One.dll" + ] + }, + "jlink-commands": { + "title": "Additional SEGGER J-Link Command Strings", + "description": "List of additional SEGGER J-Link command strings that are executed directly after the device is selected, but before the target interface and speed are selected. See [J-Link Command Strings](https://kb.segger.com/J-Link_Command_Strings) for the full list of supported command strings.", + "type": "array", + "items": { + "type": "string", + "examples": [ + "AppendToLogFile", + "EnableRemarks", + "SupplyPower" + ] + } + } + } + } + }, + "examples": [ + { + "type": "segger-jlink", + "node": "localhost", + "port": 5315, + "segger-jlink": { + "path-to-symbol-file": "build/my-firmware.elf", + "device": "RP2040_M0_0", + "target-interface": "SWD" + } + } + ] + }, + { + "$comment": "IMPORTANT: Keep all fields except 'serial-number' / 'node' + 'port' in sync. with the TCP/IP variant.", + "title": "Debugger Configuration (SEGGER J-Link over USB)", + "description": "Debugger Configuration for SEGGER J-Link over USB", + "type": "object", + "additionalProperties": false, + "required": ["type", "segger-jlink"], + "properties": { + "type": { + "title": "Debugger Connection Type", + "type": "string", + "const": "segger-jlink" + }, + "reset": { + "title": "Target Reset", + "description": "Connecting to the target on measurement start will cause a target reset. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "run": { + "title": "Start Execution", + "description": "Connecting to the target on measurement start will start execution of the program. Must be supported by the target", + "type": "boolean", + "default": false, + "examples": [true, false] + }, + "auto-connect": { + "title": "Auto Connect", + "description": "Automatically connects to the SEGGER J-Link instance on measurement start.", + "type": "boolean", + "default": true, + "examples": [true, false] + }, + "segger-jlink": { + "title": "SEGGER J-Link Settings", + "description": "Debugger specific settings for SEGGER J-Link", + "type": "object", + "additionalProperties": false, + "required": [ + "serial-number", + "path-to-symbol-file", + "device", + "target-interface" + ], + "properties": { + "serial-number": { + "oneOf": [ + { + "title": "Serial Number of the Debugger", + "description": "The serial number of the SEGGER J-Link debugger.", + "type": "number", + "minimum": 0, + "maximum": 999999999, + "examples": [852012345] + }, + { + "allOf": [ + { + "title": "Serial Number of the Debugger", + "description": "The serial number of the SEGGER J-Link debugger.", + "type": "string", + "examples": ["852012345"] + }, + { + "not": { + "const": "auto" + } + } + ] + }, + { + "title": "Serial Number of the Debugger", + "description": "Using the value 'auto' will automatically select a debugger connected via USB. Automatic selection will fail if more than one debugger is connected.", + "const": "auto" + } + ] + }, + "path-to-symbol-file": { + "title": "Symbol File", + "description": "Absolute or relative path to the symbol file. Path is relative to this configuration file. Symbol file must match to the binary running on the target.", + "type": "string", + "minLength": 1, + "examples": ["MyBinary.elf", "MyBinarySymbols.elf"] + }, + "device": { + "title": "Device", + "description": "The device name of the target as specified by the list of supported devices on the SEGGER website. The device will be selected by executing the `device = ...` Command String. See [Supported Devices](https://www.segger.com/supported-devices) for more.", + "type": "string", + "minLength": 1, + "examples": ["RP2040_M0_0", "STM32H723VE"] + }, + "target-interface": { + "title": "Target Interface", + "description": "The target interface the SEGGER J-Link will use to connect to the device.", + "type": "string", + "oneOf": [ + { + "const": "SWD", + "title": "SWD Target Interface", + "description": "Instructs the debugger to use the Serial Wire Debug (SWD) interface to connect to the device." + }, + { + "const": "JTAG", + "title": "JTAG Target Interface", + "description": "Instructs the debugger to use the Joint Test Action Group (JTAG) interface to connect to the device." + } + ] + }, + "speed": { + "title": "Target Interface Speed", + "description": "The speed at which the SEGGER J-Link will connect to the device over the target interface in kHz. The value 0 will instruct the SEGGER J-Link to autodetect the speed. The value 65535 will instruct the SEGGER J-Link to use adaptive clocking.", + "type": "number", + "minimum": 0, + "maximum": 65535, + "examples": [2000, 4000] + }, + "jlink-dll-path": { + "title": "Path to the JLinkARM.dll or JLink_x64.dll", + "description": "Absolute or relative path to the DLL file. Path is relative to this configuration file. If not present, an attempt to automatically find an installed JLink DLL is made. The bitness (32 / 64) of the selected DLL must match the runtime kernel bitness, otherwise loading the DLL will fail.", + "type": "string", + "minLength": 1, + "examples": [ + "D:\\Debugger\\SEGGER\\JLink_V884\\JLink_x64.dll", + "JLinkARM-One.dll" + ] + }, + "jlink-commands": { + "title": "Additional SEGGER J-Link Command Strings", + "description": "List of additional SEGGER J-Link command strings that are executed directly after the device is selected, but before the target interface and speed are selected. See [J-Link Command Strings](https://kb.segger.com/J-Link_Command_Strings) for the full list of supported command strings.", + "type": "array", + "items": { + "type": "string", + "examples": [ + "AppendToLogFile", + "EnableRemarks", + "SupplyPower" + ] + } + } + } + } + }, + "examples": [ + { + "type": "segger-jlink", + "segger-jlink": { + "serial-number": "852012345", + "path-to-symbol-file": "build/my-firmware.elf", + "device": "RP2040_M0_0", + "target-interface": "SWD" + } + }, + { + "type": "segger-jlink", + "segger-jlink": { + "serial-number": "auto", + "path-to-symbol-file": "build/my-other-firmware.elf", + "device": "RP2040_M0_0", + "target-interface": "SWD" + } + } + ] + } + ] + } + } + } + } + } } } } diff --git a/src/test/revola/preset.json b/src/test/revola/preset.json new file mode 100644 index 00000000000..0b6bee407ac --- /dev/null +++ b/src/test/revola/preset.json @@ -0,0 +1,3 @@ +{ + "preset": ["node", "deno"] +} diff --git a/src/test/revola/revola.json b/src/test/revola/revola.json new file mode 100644 index 00000000000..34393b7d51b --- /dev/null +++ b/src/test/revola/revola.json @@ -0,0 +1,58 @@ +{ + "changelog": { + "enabled": true, + "file": "CHANGELOG.md", + "includeTypes": ["feat", "fix", "docs"], + "title": "{{REVOLA_VERSION}} ({{REVOLA_DATE}})" + }, + "git": { + "add": true, + "author": { + "email": "bot@example.com", + "name": "revola-bot" + }, + "cleanWorkingDirectory": true, + "commit": true, + "commitMessage": "Release {{REVOLA_VERSION}}", + "push": true, + "tag": true, + "tagAnnotation": "Release {{REVOLA_VERSION}}", + "tagFormat": "v{{REVOLA_VERSION}}", + "tagMajor": false, + "tagMinor": false, + "targetBranch": "main", + "upstream": true + }, + "hooks": { + "after:publish": ["echo done", "echo cleanup"], + "before:init": "echo init" + }, + "jsr": { + "packageManager": "npx", + "publish": true, + "publishArgs": ["--allow-dirty"], + "tokenRef": "JSR_TOKEN" + }, + "logLevel": "debug", + "npm": { + "access": "public", + "packageManager": "pnpm", + "provenance": false, + "publish": true, + "registry": "https://registry.npmjs.org/", + "tag": "latest", + "tokenRef": "NPM_TOKEN" + }, + "plugins": { + "my-plugin": { + "obj": {}, + "option": true, + "str": "" + } + }, + "preset": "node", + "version": { + "defaultBump": "minor", + "strategy": "semver" + } +} diff --git a/src/test/ryl/01-valid.toml b/src/test/ryl/01-valid.toml new file mode 100644 index 00000000000..d17f1d8a0e5 --- /dev/null +++ b/src/test/ryl/01-valid.toml @@ -0,0 +1,9 @@ +#:schema ../../schemas/json/ryl.json +yaml-files = ["*.yaml", "*.yml"] +ignore = ["vendor/**"] + +[rules] +document-start = "disable" + +[rules.comments] +require-starting-space = true diff --git a/src/test/vhwdebugger-binding-schema/success.1.2.vhwdebugger-binding.yaml b/src/test/vhwdebugger-binding-schema/success.1.2.vhwdebugger-binding.yaml new file mode 100644 index 00000000000..c913ad861c4 --- /dev/null +++ b/src/test/vhwdebugger-binding-schema/success.1.2.vhwdebugger-binding.yaml @@ -0,0 +1,94 @@ +# yaml-language-server: $schema=../../schemas/json/vhwdebugger-binding-schema.json +version: '1.2' + +default-debugger: DefaultValues + +debuggers: + DefaultValues: + type: lauterbach + node: localhost + port: 30000 + + iSYSTEM: + type: isystem + reset: true + run: true + node: localhost + port: 5315 + isystem: + disable-winidea-polling: true + + TASKING: + type: tasking + reset: true + run: true + node: localhost + port: 5315 + tasking: + disable-winidea-polling: true + + Lauterbach: + type: lauterbach + reset: false + run: true + node: localhost + port: 30000 + auto-connect: true + lauterbach: + pack-len: 123 + + GDB: + type: gdb + node: localhost + port: 1234 + run: true + auto-connect: false + gdb: + path-to-gdb-client: 'dummy/gdb.exe' + path-to-symbol-file: 'dummy/app.elf' + + SEGGER-IP: + type: segger-jlink + node: localhost + port: 1234 + run: true + auto-connect: false + segger-jlink: + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD + speed: 4000 + jlink-dll-path: 'dummy/jlink.dll' + jlink-commands: + - 'command number one' + - 'the second command' + + SEGGER-USB: + type: segger-jlink + run: true + auto-connect: false + segger-jlink: + serial-number: '852012345' + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD + speed: 4000 + jlink-dll-path: 'dummy/jlink.dll' + jlink-commands: + - 'command number one' + - 'the second command' + + SEGGER-USB-2: + type: segger-jlink + run: true + auto-connect: false + segger-jlink: + serial-number: 852012345 + path-to-symbol-file: 'dummy/app.elf' + device: RP2040_M0_0 + target-interface: SWD + speed: 4000 + jlink-dll-path: 'dummy/jlink.dll' + jlink-commands: + - 'command number one' + - 'the second command'