blob: 7ceca2589bbba109ddfc79291b771d2da5e57121 [file] [log] [blame]
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "TomlManifest",
"description": "This type is used to deserialize `Cargo.toml` files.",
"type": "object",
"properties": {
"cargo-features": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"package": {
"anyOf": [
{
"$ref": "#/$defs/TomlPackage"
},
{
"type": "null"
}
]
},
"project": {
"anyOf": [
{
"$ref": "#/$defs/TomlPackage"
},
{
"type": "null"
}
]
},
"badges": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"features": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
},
"lib": {
"anyOf": [
{
"$ref": "#/$defs/TomlTarget"
},
{
"type": "null"
}
]
},
"bin": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/TomlTarget"
}
},
"example": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/TomlTarget"
}
},
"test": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/TomlTarget"
}
},
"bench": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/TomlTarget"
}
},
"dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"dev-dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"dev_dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"build-dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"build_dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"target": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/TomlPlatform"
}
},
"lints": {
"anyOf": [
{
"$ref": "#/$defs/InheritableLints"
},
{
"type": "null"
}
]
},
"workspace": {
"anyOf": [
{
"$ref": "#/$defs/TomlWorkspace"
},
{
"type": "null"
}
]
},
"profile": {
"anyOf": [
{
"$ref": "#/$defs/TomlProfiles"
},
{
"type": "null"
}
]
},
"patch": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/TomlDependency"
}
}
},
"replace": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/TomlDependency"
}
}
},
"$defs": {
"TomlPackage": {
"description": "Represents the `package`/`project` sections of a `Cargo.toml`.\n\nNote that the order of the fields matters, since this is the order they\nare serialized to a TOML file. For example, you cannot have values after\nthe field `metadata`, since it is a table and values cannot appear after\ntables.",
"type": "object",
"properties": {
"edition": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"rust-version": {
"type": [
"string",
"null"
]
},
"name": {
"type": [
"string",
"null"
]
},
"version": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField2"
},
{
"type": "null"
}
]
},
"authors": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField3"
},
{
"type": "null"
}
]
},
"build": {
"anyOf": [
{
"$ref": "#/$defs/TomlPackageBuild"
},
{
"type": "null"
}
]
},
"metabuild": {
"anyOf": [
{
"$ref": "#/$defs/StringOrVec"
},
{
"type": "null"
}
]
},
"default-target": {
"type": [
"string",
"null"
]
},
"forced-target": {
"type": [
"string",
"null"
]
},
"links": {
"type": [
"string",
"null"
]
},
"exclude": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField3"
},
{
"type": "null"
}
]
},
"include": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField3"
},
{
"type": "null"
}
]
},
"publish": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField4"
},
{
"type": "null"
}
]
},
"workspace": {
"type": [
"string",
"null"
]
},
"im-a-teapot": {
"type": [
"boolean",
"null"
]
},
"autolib": {
"type": [
"boolean",
"null"
]
},
"autobins": {
"type": [
"boolean",
"null"
]
},
"autoexamples": {
"type": [
"boolean",
"null"
]
},
"autotests": {
"type": [
"boolean",
"null"
]
},
"autobenches": {
"type": [
"boolean",
"null"
]
},
"default-run": {
"type": [
"string",
"null"
]
},
"description": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"homepage": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"documentation": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"readme": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField5"
},
{
"type": "null"
}
]
},
"keywords": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField3"
},
{
"type": "null"
}
]
},
"categories": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField3"
},
{
"type": "null"
}
]
},
"license": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"license-file": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"repository": {
"anyOf": [
{
"$ref": "#/$defs/InheritableField"
},
{
"type": "null"
}
]
},
"resolver": {
"type": [
"string",
"null"
]
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/TomlValue"
},
{
"type": "null"
}
]
}
}
},
"InheritableField": {
"description": "An enum that allows for inheriting keys from a workspace in a Cargo.toml.",
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"type": "string"
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedField"
}
]
},
"TomlInheritedField": {
"type": "object",
"properties": {
"workspace": {
"$ref": "#/$defs/WorkspaceValue"
}
},
"required": [
"workspace"
]
},
"WorkspaceValue": {
"type": "boolean"
},
"InheritableField2": {
"description": "An enum that allows for inheriting keys from a workspace in a Cargo.toml.",
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"$ref": "#/$defs/SemVer"
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedField"
}
]
},
"SemVer": {
"type": "string",
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"
},
"InheritableField3": {
"description": "An enum that allows for inheriting keys from a workspace in a Cargo.toml.",
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"type": "array",
"items": {
"type": "string"
}
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedField"
}
]
},
"TomlPackageBuild": {
"anyOf": [
{
"description": "If build scripts are disabled or enabled.\nIf true, `build.rs` in the root folder will be the build script.",
"type": "boolean"
},
{
"description": "Path of Build Script if there's just one script.",
"type": "string"
},
{
"description": "Vector of paths if multiple build script are to be used.",
"type": "array",
"items": {
"type": "string"
}
}
]
},
"StringOrVec": {
"description": "This can be parsed from either a TOML string or array,\nbut is always stored as a vector.",
"type": "array",
"items": {
"type": "string"
}
},
"InheritableField4": {
"description": "An enum that allows for inheriting keys from a workspace in a Cargo.toml.",
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"$ref": "#/$defs/VecStringOrBool"
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedField"
}
]
},
"VecStringOrBool": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "boolean"
}
]
},
"InheritableField5": {
"description": "An enum that allows for inheriting keys from a workspace in a Cargo.toml.",
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"$ref": "#/$defs/StringOrBool"
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedField"
}
]
},
"StringOrBool": {
"anyOf": [
{
"type": "string"
},
{
"type": "boolean"
}
]
},
"TomlValue": true,
"TomlTarget": {
"type": "object",
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"crate-type": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"crate_type": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"path": {
"type": [
"string",
"null"
]
},
"filename": {
"type": [
"string",
"null"
]
},
"test": {
"type": [
"boolean",
"null"
]
},
"doctest": {
"type": [
"boolean",
"null"
]
},
"bench": {
"type": [
"boolean",
"null"
]
},
"doc": {
"type": [
"boolean",
"null"
]
},
"doc-scrape-examples": {
"type": [
"boolean",
"null"
]
},
"proc-macro": {
"type": [
"boolean",
"null"
]
},
"proc_macro": {
"type": [
"boolean",
"null"
]
},
"harness": {
"type": [
"boolean",
"null"
]
},
"required-features": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"edition": {
"type": [
"string",
"null"
]
}
}
},
"InheritableDependency": {
"anyOf": [
{
"description": "The type that is used when not inheriting from a workspace.",
"$ref": "#/$defs/TomlDependency"
},
{
"description": "The type when inheriting from a workspace.",
"$ref": "#/$defs/TomlInheritedDependency"
}
]
},
"TomlDependency": {
"anyOf": [
{
"description": "In the simple format, only a version is specified, eg.\n`package = \"<version>\"`",
"type": "string"
},
{
"description": "The simple format is equivalent to a detailed dependency\nspecifying only a version, eg.\n`package = { version = \"<version>\" }`",
"$ref": "#/$defs/TomlDetailedDependency"
}
]
},
"TomlDetailedDependency": {
"type": "object",
"properties": {
"version": {
"type": [
"string",
"null"
]
},
"registry": {
"type": [
"string",
"null"
]
},
"registry-index": {
"description": "The URL of the `registry` field.\nThis is an internal implementation detail. When Cargo creates a\npackage, it replaces `registry` with `registry-index` so that the\nmanifest contains the correct URL. All users won't have the same\nregistry names configured, so Cargo can't rely on just the name for\ncrates published by other users.",
"type": [
"string",
"null"
]
},
"path": {
"type": [
"string",
"null"
]
},
"base": {
"type": [
"string",
"null"
]
},
"git": {
"type": [
"string",
"null"
]
},
"branch": {
"type": [
"string",
"null"
]
},
"tag": {
"type": [
"string",
"null"
]
},
"rev": {
"type": [
"string",
"null"
]
},
"features": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"optional": {
"type": [
"boolean",
"null"
]
},
"default-features": {
"type": [
"boolean",
"null"
]
},
"default_features": {
"type": [
"boolean",
"null"
]
},
"package": {
"type": [
"string",
"null"
]
},
"public": {
"type": [
"boolean",
"null"
]
},
"artifact": {
"description": "One or more of `bin`, `cdylib`, `staticlib`, `bin:<name>`.",
"anyOf": [
{
"$ref": "#/$defs/StringOrVec"
},
{
"type": "null"
}
]
},
"lib": {
"description": "If set, the artifact should also be a dependency",
"type": [
"boolean",
"null"
]
},
"target": {
"description": "A platform name, like `x86_64-apple-darwin`",
"type": [
"string",
"null"
]
}
}
},
"TomlInheritedDependency": {
"type": "object",
"properties": {
"workspace": {
"type": "boolean"
},
"features": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"default-features": {
"type": [
"boolean",
"null"
]
},
"default_features": {
"type": [
"boolean",
"null"
]
},
"optional": {
"type": [
"boolean",
"null"
]
},
"public": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"workspace"
]
},
"TomlPlatform": {
"description": "Corresponds to a `target` entry, but `TomlTarget` is already used.",
"type": "object",
"properties": {
"dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"build-dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"build_dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"dev-dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
},
"dev_dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/InheritableDependency"
}
}
}
},
"InheritableLints": {
"type": "object",
"properties": {
"workspace": {
"type": "boolean"
}
},
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/TomlLint"
}
}
},
"TomlLint": {
"anyOf": [
{
"$ref": "#/$defs/TomlLintLevel"
},
{
"$ref": "#/$defs/TomlLintConfig"
}
]
},
"TomlLintLevel": {
"type": "string",
"enum": [
"forbid",
"deny",
"warn",
"allow"
]
},
"TomlLintConfig": {
"type": "object",
"properties": {
"level": {
"$ref": "#/$defs/TomlLintLevel"
},
"priority": {
"type": "integer",
"format": "int8",
"minimum": -128,
"maximum": 127,
"default": 0
}
},
"required": [
"level"
],
"additionalProperties": {
"$ref": "#/$defs/TomlValue"
}
},
"TomlWorkspace": {
"type": "object",
"properties": {
"members": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"exclude": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"default-members": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"resolver": {
"type": [
"string",
"null"
]
},
"metadata": {
"anyOf": [
{
"$ref": "#/$defs/TomlValue"
},
{
"type": "null"
}
]
},
"package": {
"anyOf": [
{
"$ref": "#/$defs/InheritablePackage"
},
{
"type": "null"
}
]
},
"dependencies": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/TomlDependency"
}
},
"lints": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/TomlLint"
}
}
}
}
},
"InheritablePackage": {
"description": "A group of fields that are inheritable by members of the workspace",
"type": "object",
"properties": {
"version": {
"anyOf": [
{
"$ref": "#/$defs/SemVer"
},
{
"type": "null"
}
]
},
"authors": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"description": {
"type": [
"string",
"null"
]
},
"homepage": {
"type": [
"string",
"null"
]
},
"documentation": {
"type": [
"string",
"null"
]
},
"readme": {
"anyOf": [
{
"$ref": "#/$defs/StringOrBool"
},
{
"type": "null"
}
]
},
"keywords": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"categories": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"license": {
"type": [
"string",
"null"
]
},
"license-file": {
"type": [
"string",
"null"
]
},
"repository": {
"type": [
"string",
"null"
]
},
"publish": {
"anyOf": [
{
"$ref": "#/$defs/VecStringOrBool"
},
{
"type": "null"
}
]
},
"edition": {
"type": [
"string",
"null"
]
},
"badges": {
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"exclude": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"include": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"rust-version": {
"type": [
"string",
"null"
]
}
}
},
"TomlProfiles": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/TomlProfile"
}
},
"TomlProfile": {
"type": "object",
"properties": {
"opt-level": {
"anyOf": [
{
"$ref": "#/$defs/TomlOptLevel"
},
{
"type": "null"
}
],
"default": null
},
"lto": {
"anyOf": [
{
"$ref": "#/$defs/StringOrBool"
},
{
"type": "null"
}
],
"default": null
},
"codegen-backend": {
"type": [
"string",
"null"
],
"default": null
},
"codegen-units": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"default": null
},
"debug": {
"anyOf": [
{
"$ref": "#/$defs/TomlDebugInfo"
},
{
"type": "null"
}
],
"default": null
},
"split-debuginfo": {
"type": [
"string",
"null"
],
"default": null
},
"debug-assertions": {
"type": [
"boolean",
"null"
],
"default": null
},
"rpath": {
"type": [
"boolean",
"null"
],
"default": null
},
"panic": {
"type": [
"string",
"null"
],
"default": null
},
"overflow-checks": {
"type": [
"boolean",
"null"
],
"default": null
},
"incremental": {
"type": [
"boolean",
"null"
],
"default": null
},
"dir-name": {
"type": [
"string",
"null"
],
"default": null
},
"inherits": {
"type": [
"string",
"null"
],
"default": null
},
"strip": {
"anyOf": [
{
"$ref": "#/$defs/StringOrBool"
},
{
"type": "null"
}
],
"default": null
},
"rustflags": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"default": null
},
"package": {
"type": [
"object",
"null"
],
"additionalProperties": {
"$ref": "#/$defs/TomlProfile"
},
"default": null
},
"build-override": {
"anyOf": [
{
"$ref": "#/$defs/TomlProfile"
},
{
"type": "null"
}
],
"default": null
},
"trim-paths": {
"description": "Unstable feature `-Ztrim-paths`.",
"anyOf": [
{
"$ref": "#/$defs/TomlTrimPaths"
},
{
"type": "null"
}
],
"default": null
},
"hint-mostly-unused": {
"description": "Unstable feature `hint-mostly-unused`",
"type": [
"boolean",
"null"
],
"default": null
}
}
},
"TomlOptLevel": {
"type": "string"
},
"TomlDebugInfo": {
"type": "string",
"enum": [
"None",
"LineDirectivesOnly",
"LineTablesOnly",
"Limited",
"Full"
]
},
"PackageIdSpec": {
"type": "string"
},
"TomlTrimPaths": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/TomlTrimPathsValue"
}
},
{
"type": "null"
}
]
},
"TomlTrimPathsValue": {
"type": "string",
"enum": [
"diagnostics",
"macro",
"object"
]
}
}
}