diff --git a/schemas/devcontainer-features.schema.json b/schemas/devcontainer-features.schema.json deleted file mode 100644 index d17d4c616..000000000 --- a/schemas/devcontainer-features.schema.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/definitions/FeaturesJson", - "definitions": { - "FeaturesJson": { - "type": "object", - "properties": { - "features": { - "type": "array", - "items": { - "$ref": "#/definitions/Feature" - } - } - }, - "required": [ - "features" - ], - "additionalProperties": false - }, - "Feature": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Identifier for this feature. Used in the devcontainer.json to refer to this feature.", - "examples": ["docker-in-docker"] - }, - "name": { - "type": "string", - "description": "Name for this feature. Show to the user in the UI.", - "examples": ["Docker in Docker"] - }, - "documentationURL": { - "type": "string", - "description": "URL for documentation on this feature.", - "examples": ["https://example.com/docs/docker-in-docker"] - }, - "options": { - "type": "object", - "description": "Options provided are written to a devcontainer-features.env file to be sourced during image build. Environment variables follow the format _BUILD_ARG__.", - "additionalProperties": { - "$ref": "#/definitions/FeatureOption" - } - }, - "buildArg": { - "type": "string", - "description": "DEPRECATED: Old property used for temporary compatibility." - }, - "containerEnv": { - "type": "object", - "description": "Container environment variables.", - "additionalProperties": { - "examples": [ { "DOCKER__BUILDKIT": "1" } ], - "type": "string", - "description": "Environment variables to inject into the Dockerfile at build-time." - } - }, - "mounts": { - "type": "array", - "description": "Mount points to set up when creating the container.", - "items": { - "$ref": "#/definitions/Mount" - } - }, - "extensions": { - "type": "array", - "description": "An array of extensions that should be installed into the container.", - "examples": [ "ms-azuretools.vscode-docker" ], - "items": { - "type": "string", - "description": "VS Code extension identifiers to install." - } - }, - "settings": { - "$ref": "vscode://schemas/settings/machine", - "type": "object", - "description": "Machine specific settings that should be copied into the container." - }, - "init": { - "type": "boolean", - "description": "Passes the --init flag at runtime." - }, - "privileged": { - "type": "boolean", - "description": "Passes the --privileged flag at runtime." - }, - "capAdd": { - "type": "array", - "description": "Passes docker capabilities to include at runtime.", - "examples": [ "SYS_PTRACE" ], - "items": { - "type": "string" - } - }, - "securityOpt": { - "type": "array", - "description": "Passes docker security options to include at runtime.", - "examples": [ "seccomp=unconfined" ], - "items": { - "type": "string" - } - }, - "entrypoint": { - "type": "string", - "description": "Provides a custom entrypoint.", - "examples": ["/usr/local/share/docker-init.sh"] - }, - "include": { - "type": "array", - "description": "Base definitions that permit this features to be composed onto it.", - "examples": [ ["ubuntu", "java"] ], - "items": { - "type": "string" - } - }, - "exclude": { - "type": "array", - "description": "Base definitions that do not permit this features to be composed onto it.", - "examples": [ ["ubuntu", "java"] ], - "items": { - "type": "string" - } - }, - "vscode": { - "type": "object", - "properties": { - "extensions": { - "type": "array", - "description": "An array of extensions that should be installed into the container.", - "examples": [ "ms-azuretools.vscode-docker" ], - "items": { - "type": "string", - "description": "VS Code extension identifiers to install." - } - }, - "settings": { - "$ref": "vscode://schemas/settings/machine", - "type": "object", - "description": "Machine specific settings that should be copied into the container." - } - } - } - }, - "required": [ - "id", - "name" - ], - "additionalProperties": false - }, - "FeatureOption": { - "anyOf": [ - { - "type": "object", - "description": "Option identifier", - "properties": { - "type": { - "type": "string", - "const": "boolean", - "description": "Option type." - }, - "default": { - "type": "boolean", - "description": "A default value if none provided." - }, - "description": { - "description": "Optional hint for the given option.", - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - { - "type": "object", - "description": "Option identifier.", - "properties": { - "type": { - "type": "string", - "const": "string", - "description": "Option type." - }, - "enum": { - "type": "array", - "description": "Enumeration of all possible values for the given option. Custom values are not accepted.", - "items": { - "type": "string" - } - }, - "default": { - "type": "string", - "description": "A default value if none provided." - }, - "description": { - "description": "Optional hint for the given option.", - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - }, - { - "type": "object", - "description": "Option identifier.", - "properties": { - "type": { - "type": "string", - "const": "string", - "description": "Option type." - }, - "proposals": { - "type": "array", - "description": "List of suggested values for the given option. Custom values are also accepted.", - "examples": [ [ "latest", "20.10" ]], - "items": { - "type": "string" - } - }, - "default": { - "type": "string", - "description": "A default value if none provided." - }, - "description": { - "description": "Optional hint for the given option.", - "type": "string" - } - }, - "required": [ - "type" - ], - "additionalProperties": false - } - ] - }, - "Mount": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "bind", - "volume" - ], - "description": "Mount type." - }, - "source": { - "type": "string", - "description": "Mount source." - }, - "target": { - "type": "string", - "description": "Mount target." - } - }, - "required": [ - "type", - "source", - "target" - ], - "additionalProperties": false - } - } -} \ No newline at end of file diff --git a/src/spec-configuration/containerFeaturesConfiguration.ts b/src/spec-configuration/containerFeaturesConfiguration.ts index 4f86732f0..22725df9a 100644 --- a/src/spec-configuration/containerFeaturesConfiguration.ts +++ b/src/spec-configuration/containerFeaturesConfiguration.ts @@ -48,6 +48,7 @@ export interface Feature { included: boolean; // set programmatically customizations?: VSCodeCustomizations; installsAfter?: string[]; + deprecated?: boolean; legacyIds?: string[]; currentId?: string; // set programmatically }