-
Notifications
You must be signed in to change notification settings - Fork 28.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VS Code doesn't correctly uninstall duplicate extensions with different publisher ID #76211
Comments
(Experimental duplicate detection) |
See #59918 (comment) for how I migrated an extension to a new publisher id. Part of my procedure included releasing a stub version under the old publisher id. The old extension doesn't automatically uninstall but at least it doesn't interfere with the new one. |
AFIK old extension with old name will not interfere with new extension with new name. If you still have the set up to reproduce, can you please open the extensions directory under which extensions are created and open the old extension folder and provide us the package.json contents? Also open the package.json of the new extension and check if they have |
@sandy081 you can reproduce in the following way (I'm testing on insiders)
"ms-azuretools" package.json{
"name": "vscode-docker",
"version": "0.6.4",
"preview": true,
"publisher": "ms-azuretools",
"displayName": "Docker",
"description": "Adds syntax highlighting, commands, hover tips, and linting for Dockerfile and docker-compose files.",
"license": "SEE LICENSE IN LICENSE.md",
"icon": "images/docker_icon.png",
"aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
"galleryBanner": {
"color": "#1289B9",
"theme": "dark"
},
"categories": [
"Programming Languages",
"Linters",
"Azure"
],
"keywords": [
"docker",
"compose",
"container",
"multi-root ready"
],
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode-docker"
},
"homepage": "https://github.com/Microsoft/vscode-docker/blob/master/README.md",
"activationEvents": [
"onCommand:vscode-docker.acr.createRegistry",
"onCommand:vscode-docker.acr.deleteImage",
"onCommand:vscode-docker.acr.deleteRegistry",
"onCommand:vscode-docker.acr.deleteRepository",
"onCommand:vscode-docker.acr.pullImage",
"onCommand:vscode-docker.acr.pullRepo",
"onCommand:vscode-docker.acr.quickBuild",
"onCommand:vscode-docker.acr.runTask",
"onCommand:vscode-docker.acr.runTaskFile",
"onCommand:vscode-docker.acr.showTask",
"onCommand:vscode-docker.acr.untagImage",
"onCommand:vscode-docker.acr.viewLogs",
"onCommand:vscode-docker.api.configure",
"onCommand:vscode-docker.browseAzurePortal",
"onCommand:vscode-docker.browseDockerHub",
"onCommand:vscode-docker.compose.down",
"onCommand:vscode-docker.compose.restart",
"onCommand:vscode-docker.compose.up",
"onCommand:vscode-docker.configure",
"onCommand:vscode-docker.connectCustomRegistry",
"onCommand:vscode-docker.container.open-shell",
"onCommand:vscode-docker.container.remove",
"onCommand:vscode-docker.container.restart",
"onCommand:vscode-docker.container.show-logs",
"onCommand:vscode-docker.container.start",
"onCommand:vscode-docker.container.start.azurecli",
"onCommand:vscode-docker.container.start.interactive",
"onCommand:vscode-docker.container.stop",
"onCommand:vscode-docker.createWebApp",
"onCommand:vscode-docker.disconnectCustomRegistry",
"onCommand:vscode-docker.dockerHubLogin",
"onCommand:vscode-docker.dockerHubLogout",
"onCommand:vscode-docker.explorer.refresh",
"onCommand:vscode-docker.image.build",
"onCommand:vscode-docker.image.inspect",
"onCommand:vscode-docker.image.push",
"onCommand:vscode-docker.image.remove",
"onCommand:vscode-docker.images.selectGroupBy",
"onCommand:vscode-docker.image.tag",
"onCommand:vscode-docker.setRegistryAsDefault",
"onCommand:vscode-docker.system.prune",
"onDebugInitialConfigurations",
"onDebugResolve:docker-coreclr",
"onLanguage:dockerfile",
"onLanguage:yaml",
"onView:dockerExplorer"
],
"main": "main",
"contributes": {
"menus": {
"commandPalette": [
{
"command": "vscode-docker.api.configure",
"when": "never"
},
{
"command": "vscode-docker.browseDockerHub",
"when": "false"
},
{
"command": "vscode-docker.createWebApp",
"when": "false"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"when": "never"
},
{
"command": "vscode-docker.acr.createRegistry",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.deleteImage",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.deleteRegistry",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.deleteRepository",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.pullImage",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.pullRepo",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.quickBuild",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.runTask",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.runTaskFile",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.showTask",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.untagImage",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.acr.viewLogs",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.browseAzurePortal",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.compose.down",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.compose.restart",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.compose.up",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.configure",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.connectCustomRegistry",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.open-shell",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.remove",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.restart",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.show-logs",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.start",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.start.azurecli",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.start.interactive",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.container.stop",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.disconnectCustomRegistry",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.dockerHubLogin",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.dockerHubLogout",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.explorer.refresh",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.image.build",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.image.inspect",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.image.push",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.image.remove",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.images.selectGroupBy",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.image.tag",
"when": "!isOldDockerPublisherInstalled"
},
{
"command": "vscode-docker.system.prune",
"when": "!isOldDockerPublisherInstalled"
}
],
"editor/context": [
{
"when": "!isOldDockerPublisherInstalled && editorLangId == dockerfile && isAzureAccountInstalled",
"command": "vscode-docker.acr.quickBuild",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && editorLangId == yaml",
"command": "vscode-docker.acr.runTaskFile",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && editorLangId == dockerfile",
"command": "vscode-docker.image.build",
"group": "docker"
}
],
"explorer/context": [
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /(^|\\.)dockerfile$/i",
"command": "vscode-docker.acr.quickBuild",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /^(?:(?!^docker-compose\\.ya?ml$).)*\\.ya?ml$/i",
"command": "vscode-docker.acr.runTaskFile",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "!isOldDockerPublisherInstalled && resourceFilename =~ /dockerfile/i",
"command": "vscode-docker.image.build",
"group": "docker"
}
],
"view/title": [
{
"command": "vscode-docker.explorer.refresh",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer",
"group": "navigation@1"
},
{
"command": "vscode-docker.system.prune",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer",
"group": "navigation@2"
}
],
"view/item/context": [
{
"command": "vscode-docker.images.selectGroupBy",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^imagesRootNode$/",
"group": "inline"
},
{
"command": "vscode-docker.acr.createRegistry",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureRegistryRootNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteImage",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteRegistry",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureRegistryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteRepository",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureRepositoryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.pullImage",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.pullRepo",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureRepositoryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.runTask",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == taskNode",
"group": "default"
},
{
"command": "vscode-docker.acr.showTask",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == taskNode",
"group": "default"
},
{
"command": "vscode-docker.acr.untagImage",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.viewLogs",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(azureRegistryNode|azureImageTagNode|taskNode)$/",
"group": "default"
},
{
"command": "vscode-docker.browseDockerHub",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(dockerHubImageTagNode|dockerHubRepositoryNode|dockerHubOrgNode)$/",
"group": "default"
},
{
"command": "vscode-docker.browseAzurePortal",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(azureRegistryNode|azureRepositoryNode|azureImageTagNode)$/",
"group": "default"
},
{
"command": "vscode-docker.connectCustomRegistry",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == customRootNode",
"group": "default"
},
{
"command": "vscode-docker.container.open-shell",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.remove",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(stoppedLocalContainerNode|runningLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.restart",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|stoppedLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.show-logs",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|stoppedLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.start",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.container.start.interactive",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.container.stop",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|containersRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.createWebApp",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(azureImageTagNode|dockerHubImageTagNode|customImageTagNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.disconnectCustomRegistry",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(customRegistryNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.dockerHubLogout",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem == dockerHubRootNode",
"group": "5_default"
},
{
"command": "vscode-docker.image.inspect",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.push",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.remove",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.tag",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"when": "!isOldDockerPublisherInstalled && view == dockerExplorer && viewItem =~ /^(customRegistryNode|azureRegistryNode|dockerHubOrgNode)$/",
"group": "5_default"
}
]
},
"debuggers": [
{
"type": "docker",
"label": "Docker: Node.js",
"configurationSnippets": [
{
"label": "Docker: Attach to Node",
"description": "Docker: Attach to Node",
"body": {
"type": "node",
"request": "attach",
"name": "Docker: Attach to Node",
"remoteRoot": "/usr/src/app"
}
}
]
},
{
"type": "docker-coreclr",
"label": "Docker: Launch .NET Core (Preview)",
"configurationSnippets": [
{
"label": "Docker: Launch .NET Core (Preview)",
"description": "Docker: Launch .NET Core (Preview)",
"body": {
"name": "Docker: Launch .NET Core (Preview)",
"type": "docker-coreclr",
"request": "launch",
"preLaunchTask": "build",
"dockerBuild": {},
"dockerRun": {}
}
}
],
"configurationAttributes": {
"launch": {
"properties": {
"appFolder": {
"type": "string",
"description": "Path to the folder for the application."
},
"appOutput": {
"type": "string",
"description": "Path to the output assembly for the application."
},
"appProject": {
"type": "string",
"description": "Path to the application project file."
},
"dockerBuild": {
"description": "Options for building the Docker image used for debugging.",
"properties": {
"args": {
"type": "object",
"description": "Build arguments applied to the Docker image used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"context": {
"type": "string",
"description": "Path to the Docker build context."
},
"dockerfile": {
"type": "string",
"description": "Path to the Dockerfile used for the build."
},
"labels": {
"type": "object",
"description": "Labels applied to the Docker image used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"tag": {
"type": "string",
"description": "Tag applied to the Docker image used for debugging."
},
"target": {
"type": "string",
"description": "Docker build target (stage) used for debugging."
}
}
},
"dockerRun": {
"description": "Options for running the Docker container used for debugging.",
"properties": {
"containerName": {
"type": "string",
"description": "Name of the container used for debugging."
},
"env": {
"type": "object",
"description": "Environment variables applied to the Docker container used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"envFiles": {
"type": "array",
"description": "Files of environment variables read in and applied to the Docker container used for debugging.",
"items": {
"type": "string"
}
},
"labels": {
"type": "object",
"description": "Labels applied to the Docker container used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"network": {
"type": "string",
"description": "The network to which the container will be connected."
},
"networkAlias": {
"type": "string",
"description": "The network-scoped alias to assign to the container."
},
"ports": {
"type": "array",
"description": "Ports that are going to be mapped on the host.",
"items": {
"type": "object",
"properties": {
"hostPort": {
"type": "string",
"description": "Port number to be bound on the host."
},
"containerPort": {
"type": "string",
"description": "Port number of the container to be bound."
},
"protocol": {
"type": "string",
"description": "Specific protocol for the binding (`tcp | udp`).",
"enum": [
"tcp",
"udp"
]
},
"required": [
"containerPort"
]
}
}
},
"extraHosts": {
"type": "array",
"description": "Hosts to be added to the container's `hosts` file for DNS resolution.",
"items": {
"type": "object",
"properties": {
"hostname": {
"type": "string",
"description": "Hostname for dns resolution."
},
"ip": {
"type": "string",
"description": "IP associated to the hostname."
}
},
"required": [
"hostname",
"ip"
]
}
},
"volumes": {
"type": "array",
"description": "Volumes that are going to be mapped to the container.",
"items": {
"type": "object",
"properties": {
"localPath": {
"type": "string",
"description": "Path on local machine that will be mapped. The folder will be created if it does not exist."
},
"containerPath": {
"type": "string",
"description": "Path where the volume will be mapped within the container. The folder will be created if it does not exist."
},
"permissions": {
"type": "string",
"description": "Permissions for the container for the mapped volume, `rw` for read-write or `ro` for read-only.",
"enum": [
"rw",
"ro"
]
}
},
"required": [
"localPath",
"containerPath"
]
}
}
}
}
}
}
}
}
],
"languages": [
{
"id": "dockerfile",
"aliases": [
"Dockerfile"
],
"filenamePatterns": [
"*.dockerfile",
"Dockerfile"
]
},
{
"id": "ignore",
"filenames": [
".dockerignore"
]
}
],
"configuration": {
"type": "object",
"title": "Docker configuration options",
"properties": {
"docker.defaultRegistryPath": {
"type": "string",
"default": "",
"description": "Default registry and path when tagging an image"
},
"docker.showExplorer": {
"type": "boolean",
"default": true,
"description": "Show or hide the Explorer"
},
"docker.explorerRefreshInterval": {
"type": "number",
"default": 1000,
"description": "Explorer refresh interval, default is 1000ms"
},
"docker.groupImagesBy": {
"type": "string",
"default": "Repository",
"description": "How to group items in the treeview Images node",
"enum": [
"None",
"Repository",
"RepositoryName",
"ImageId"
]
},
"docker.imageBuildContextPath": {
"type": "string",
"default": "",
"description": "Build context PATH to pass to Docker build command"
},
"docker.truncateLongRegistryPaths": {
"type": "boolean",
"default": false,
"description": "Truncate long Image and Container registry paths in the Explorer"
},
"docker.truncateMaxLength": {
"type": "number",
"default": 10,
"description": "Maximum number of characters for long registry paths in the Explorer, including elipsis"
},
"docker.host": {
"type": "string",
"default": "",
"description": "Full host address to connect to (with protocol). Equivalent to setting the DOCKER_HOST environment variable"
},
"docker.importCertificates": {
"oneOf": [
{
"type": "boolean"
},
{
"type": "object",
"properties": {
"useCertificateStore": {
"type": "boolean",
"default": true,
"description": "On Mac and Windows, indicates whether to automatically import certificates from the system certificate store. Ignored on Linux."
},
"certificatePaths": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"/etc/ssl/certs/ca-certificates",
"/etc/openssl/certs",
"/etc/pki/tls/certs",
"/usr/local/share/certs"
],
"description": "Paths to files or folders containing certificates to import. For Linux, the correct path to pick up system-wide certificates will depend on the distribution."
}
}
}
],
"default": false,
"description": "True causes the extension to attempt to find system-wide certificates, false indicates that the default Node.js trusted certificates list will be used. Use an object to get more fine-grained control."
},
"docker.languageserver.diagnostics.deprecatedMaintainer": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for the deprecated MAINTAINER instruction"
},
"docker.languageserver.diagnostics.emptyContinuationLine": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging empty continuation lines found in instructions that span multiple lines"
},
"docker.languageserver.diagnostics.directiveCasing": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for parser directives that are not written in lowercase"
},
"docker.languageserver.diagnostics.instructionCasing": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for instructions that are not written in uppercase"
},
"docker.languageserver.diagnostics.instructionCmdMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple CMD instructions"
},
"docker.languageserver.diagnostics.instructionEntrypointMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple ENTRYPOINT instructions"
},
"docker.languageserver.diagnostics.instructionHealthcheckMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple HEALTHCHECK instructions"
},
"docker.languageserver.diagnostics.instructionJSONInSingleQuotes": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for JSON instructions that are written incorrectly with single quotes"
},
"docker.languageserver.diagnostics.instructionWorkdirRelative": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for WORKDIR instructions that do not point to an absolute path"
},
"docker.attachShellCommand.linuxContainer": {
"type": "string",
"default": "/bin/sh -c \"[ -e /bin/bash ] && /bin/bash || /bin/sh\"",
"description": "Attach command to use for Linux containers"
},
"docker.attachShellCommand.windowsContainer": {
"type": "string",
"default": "powershell",
"description": "Attach command to use for Windows containers"
},
"docker.promptOnSystemPrune": {
"type": "boolean",
"default": true,
"description": "Prompt for confirmation when running System Prune command"
},
"docker.dockerComposeBuild": {
"type": "boolean",
"default": true,
"description": "Run docker-compose with the --build argument, defaults to true"
},
"docker.dockerComposeDetached": {
"type": "boolean",
"default": true,
"description": "Run docker-compose with the --d (detached) argument, defaults to true"
}
}
},
"commands": [
{
"command": "vscode-docker.images.selectGroupBy",
"title": "Group Images By...",
"icon": {
"light": "images/SortingGrouping_16x.svg",
"dark": "images/SortingGrouping_16x.svg"
},
"category": "Docker"
},
{
"command": "vscode-docker.acr.createRegistry",
"title": "Create Azure Registry",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteImage",
"title": "Delete Azure Image",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteRegistry",
"title": "Delete Azure Registry",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteRepository",
"title": "Delete Azure Repository",
"category": "Docker"
},
{
"command": "vscode-docker.acr.pullImage",
"title": "Pull Tag from Azure",
"category": "Docker"
},
{
"command": "vscode-docker.acr.pullRepo",
"title": "Pull Repository from Azure",
"description": "Pull all Image tags from an Azure Repository",
"category": "Docker"
},
{
"command": "vscode-docker.acr.quickBuild",
"title": "ACR Tasks: Build Image",
"description": "Queue an Azure build from a Dockerfile",
"category": "Docker"
},
{
"command": "vscode-docker.acr.runTask",
"title": "Run Task",
"category": "Docker"
},
{
"command": "vscode-docker.acr.runTaskFile",
"title": "Run ACR Task File",
"description": "Run an ACR task from a yaml file.",
"category": "Docker"
},
{
"command": "vscode-docker.acr.showTask",
"title": "Show Task Properties",
"category": "Docker"
},
{
"command": "vscode-docker.acr.untagImage",
"title": "Untag Azure Image",
"category": "Docker"
},
{
"command": "vscode-docker.acr.viewLogs",
"title": "View Task Logs",
"category": "Docker"
},
{
"command": "vscode-docker.api.configure",
"title": "Add Docker Files to Workspace (API)"
},
{
"command": "vscode-docker.browseDockerHub",
"title": "Browse in Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.browseAzurePortal",
"title": "Browse in the Azure Portal",
"category": "Docker"
},
{
"command": "vscode-docker.compose.down",
"title": "Compose Down",
"description": "Stops a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.compose.restart",
"title": "Compose Restart",
"description": "Restarts a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.compose.up",
"title": "Compose Up",
"description": "Starts a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.configure",
"title": "Add Docker Files to Workspace",
"description": "Add Dockerfile, docker-compose.yml files",
"category": "Docker"
},
{
"command": "vscode-docker.connectCustomRegistry",
"title": "Connect to a Private Registry... (Preview)",
"category": "Docker"
},
{
"command": "vscode-docker.container.open-shell",
"title": "Attach Shell",
"description": "Open a terminal with an interactive shell for a running container",
"category": "Docker"
},
{
"command": "vscode-docker.container.remove",
"title": "Remove Container",
"description": "Remove a stopped container",
"category": "Docker"
},
{
"command": "vscode-docker.container.restart",
"title": "Restart Container",
"description": "Restart one or more containers",
"category": "Docker"
},
{
"command": "vscode-docker.container.show-logs",
"title": "Show Logs",
"description": "Show the logs of a running container",
"category": "Docker"
},
{
"command": "vscode-docker.container.start",
"title": "Run",
"description": "Starts a container from an image",
"category": "Docker"
},
{
"command": "vscode-docker.container.start.azurecli",
"title": "Azure CLI",
"description": "Starts a container from the Azure CLI image and runs it interactively",
"category": "Docker"
},
{
"command": "vscode-docker.container.start.interactive",
"title": "Run Interactive",
"description": "Starts a container from an image and runs it interactively",
"category": "Docker"
},
{
"command": "vscode-docker.container.stop",
"title": "Stop Container",
"description": "Stop a running container",
"category": "Docker"
},
{
"command": "vscode-docker.createWebApp",
"title": "Deploy Image to Azure App Service",
"category": "Docker"
},
{
"command": "vscode-docker.disconnectCustomRegistry",
"title": "Disconnect from Private Registry",
"category": "Docker"
},
{
"command": "vscode-docker.dockerHubLogin",
"title": "Log In to Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.dockerHubLogout",
"title": "Log Out of Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.explorer.refresh",
"title": "Refresh Explorer",
"category": "Docker",
"icon": {
"light": "images/light/refresh.svg",
"dark": "images/dark/refresh.svg"
}
},
{
"command": "vscode-docker.image.build",
"title": "Build Image",
"description": "Build a Docker image from a Dockerfile",
"category": "Docker"
},
{
"command": "vscode-docker.image.inspect",
"title": "Inspect Image",
"description": "Inspect the metadata of a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.image.push",
"title": "Push",
"description": "Push an image to a registry",
"category": "Docker"
},
{
"command": "vscode-docker.image.remove",
"title": "Remove Image",
"description": "Remove a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.image.tag",
"title": "Tag Image",
"description": "Tag a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"title": "Set as Default Registry Path",
"category": "Docker"
},
{
"command": "vscode-docker.system.prune",
"title": "System Prune",
"category": "Docker",
"icon": {
"light": "images/light/prune.svg",
"dark": "images/dark/prune.svg"
}
}
],
"views": {
"dockerView": [
{
"id": "dockerExplorer",
"name": "Explorer",
"when": "config.docker.showExplorer == true"
}
]
},
"viewsContainers": {
"activitybar": [
{
"icon": "images/docker.svg",
"id": "dockerView",
"title": "Docker"
}
]
}
},
"engines": {
"vscode": "^1.26.0"
},
"scripts": {
"vscode:prepublish": "npm run webpack-prod",
"build": "tsc -p ./",
"compile": "tsc -watch -p ./",
"package": "vsce package",
"lint": "tslint --project tsconfig.json -t verbose",
"lint-fix": "tslint --project tsconfig.json -t verbose --fix",
"postinstall": "node ./node_modules/vscode/bin/install",
"pretest": "npm run build && npm run webpack",
"test": "gulp test",
"all": "npm i && npm run lint && npm test",
"webpack": "gulp webpack-dev",
"webpack-prod": "gulp webpack-prod",
"webpack-profile": "webpack --profile --json --mode production > webpack-stats.json && echo Use http://webpack.github.io/analyse to analyze the stats"
},
"extensionDependencies": [
"vscode.docker",
"vscode.yaml"
],
"devDependencies": {
"@types/adm-zip": "^0.4.32",
"@types/deep-equal": "^1.0.1",
"@types/dockerode": "^2.5.12",
"@types/fs-extra": "^5.0.5",
"@types/glob": "5.0.35",
"@types/keytar": "^4.4.0",
"@types/mocha": "^5.2.6",
"@types/node": "^11.12.0",
"@types/request-promise-native": "^1.0.15",
"@types/semver": "^5.5.0",
"@types/string-replace-webpack-plugin": "^0.1.0",
"@types/xml2js": "^0.4.3",
"adm-zip": "^0.4.11",
"copy-webpack-plugin": "^4.5.4",
"gulp": "^4.0.0",
"mocha": "^5.2.0",
"mocha-junit-reporter": "^1.18.0",
"mocha-multi-reporters": "^1.1.7",
"string-replace-webpack-plugin": "^0.1.3",
"ts-node": "^7.0.1",
"tslint": "^5.14.0",
"tslint-microsoft-contrib": "^6.1.0",
"typescript": "^3.3.4000",
"umd-compat-loader": "^2.1.1",
"vsce": "^1.59.0",
"vscode": "^1.1.18",
"vscode-azureextensiondev": "^0.1.8",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0"
},
"dependencies": {
"adal-node": "^0.1.28",
"azure-arm-containerregistry": "^3.0.0",
"azure-arm-resource": "^2.0.0-preview",
"azure-arm-website": "^1.0.0-preview",
"azure-storage": "^2.8.1",
"clipboardy": "^1.2.3",
"deep-equal": "^1.0.1",
"dockerfile-language-server-nodejs": "^0.0.20",
"dockerode": "^2.5.8",
"fs-extra": "^6.0.1",
"glob": "7.1.2",
"gradle-to-js": "^1.2.1",
"mac-ca": "^1.0.4",
"moment": "^2.24.0",
"ms-rest": "^2.5.0",
"ms-rest-azure": "^2.6.0",
"opn": "^6.0.0",
"request": "^2.88.0",
"request-promise-native": "^1.0.5",
"semver": "^6.0.0",
"tar": "^4.4.6",
"vscode-azureextensionui": "^0.23.2",
"vscode-languageclient": "^5.1.1",
"win-ca": "^2.4.1",
"xml2js": "^0.4.19"
},
"__metadata": {
"id": "0479fc1c-3d67-49f9-b087-fb9069afe48f",
"publisherId": "52b787f2-79a9-4f32-99b4-393afe3005d3",
"publisherDisplayName": "Microsoft"
}
} "PeterJausovec" package.json{
"name": "vscode-docker",
"version": "0.6.2",
"preview": true,
"publisher": "PeterJausovec",
"displayName": "Docker",
"description": "Adds syntax highlighting, commands, hover tips, and linting for Dockerfile and docker-compose files.",
"license": "SEE LICENSE IN LICENSE.md",
"icon": "images/docker_icon.png",
"aiKey": "AIF-d9b70cd4-b9f9-4d70-929b-a071c400b217",
"galleryBanner": {
"color": "#1289B9",
"theme": "dark"
},
"categories": [
"Programming Languages",
"Linters",
"Azure"
],
"keywords": [
"docker",
"compose",
"container",
"multi-root ready"
],
"repository": {
"type": "git",
"url": "https://github.com/microsoft/vscode-docker"
},
"homepage": "https://github.com/Microsoft/vscode-docker/blob/master/README.md",
"activationEvents": [
"onCommand:vscode-docker.acr.createRegistry",
"onCommand:vscode-docker.acr.deleteImage",
"onCommand:vscode-docker.acr.deleteRegistry",
"onCommand:vscode-docker.acr.deleteRepository",
"onCommand:vscode-docker.acr.pullImage",
"onCommand:vscode-docker.acr.pullRepo",
"onCommand:vscode-docker.acr.quickBuild",
"onCommand:vscode-docker.acr.runTask",
"onCommand:vscode-docker.acr.runTaskFile",
"onCommand:vscode-docker.acr.showTask",
"onCommand:vscode-docker.acr.untagImage",
"onCommand:vscode-docker.acr.viewLogs",
"onCommand:vscode-docker.api.configure",
"onCommand:vscode-docker.browseAzurePortal",
"onCommand:vscode-docker.browseDockerHub",
"onCommand:vscode-docker.compose.down",
"onCommand:vscode-docker.compose.restart",
"onCommand:vscode-docker.compose.up",
"onCommand:vscode-docker.configure",
"onCommand:vscode-docker.connectCustomRegistry",
"onCommand:vscode-docker.container.open-shell",
"onCommand:vscode-docker.container.remove",
"onCommand:vscode-docker.container.restart",
"onCommand:vscode-docker.container.show-logs",
"onCommand:vscode-docker.container.start",
"onCommand:vscode-docker.container.start.azurecli",
"onCommand:vscode-docker.container.start.interactive",
"onCommand:vscode-docker.container.stop",
"onCommand:vscode-docker.createWebApp",
"onCommand:vscode-docker.disconnectCustomRegistry",
"onCommand:vscode-docker.dockerHubLogin",
"onCommand:vscode-docker.dockerHubLogout",
"onCommand:vscode-docker.explorer.refresh",
"onCommand:vscode-docker.image.build",
"onCommand:vscode-docker.image.inspect",
"onCommand:vscode-docker.image.push",
"onCommand:vscode-docker.image.remove",
"onCommand:vscode-docker.images.selectGroupBy",
"onCommand:vscode-docker.image.tag",
"onCommand:vscode-docker.setRegistryAsDefault",
"onCommand:vscode-docker.system.prune",
"onDebugInitialConfigurations",
"onDebugResolve:docker-coreclr",
"onLanguage:dockerfile",
"onLanguage:yaml",
"onView:dockerExplorer"
],
"main": "main",
"contributes": {
"menus": {
"commandPalette": [
{
"command": "vscode-docker.api.configure",
"when": "never"
},
{
"command": "vscode-docker.browseDockerHub",
"when": "false"
},
{
"command": "vscode-docker.createWebApp",
"when": "false"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"when": "never"
}
],
"editor/context": [
{
"when": "editorLangId == dockerfile && isAzureAccountInstalled",
"command": "vscode-docker.acr.quickBuild",
"group": "docker"
},
{
"when": "editorLangId == yaml",
"command": "vscode-docker.acr.runTaskFile",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.yml",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "resourceFilename == docker-compose.debug.yml",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "editorLangId == dockerfile",
"command": "vscode-docker.image.build",
"group": "docker"
}
],
"explorer/context": [
{
"when": "resourceFilename =~ /(^|\\.)dockerfile$/i",
"command": "vscode-docker.acr.quickBuild",
"group": "docker"
},
{
"when": "resourceFilename =~ /^(?:(?!^docker-compose\\.ya?ml$).)*\\.ya?ml$/i",
"command": "vscode-docker.acr.runTaskFile",
"group": "docker"
},
{
"when": "resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.down",
"group": "docker"
},
{
"when": "resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.restart",
"group": "docker"
},
{
"when": "resourceFilename =~ /docker-compose/i",
"command": "vscode-docker.compose.up",
"group": "docker"
},
{
"when": "resourceFilename =~ /dockerfile/i",
"command": "vscode-docker.image.build",
"group": "docker"
}
],
"view/title": [
{
"command": "vscode-docker.explorer.refresh",
"when": "view == dockerExplorer",
"group": "navigation@1"
},
{
"command": "vscode-docker.system.prune",
"when": "view == dockerExplorer",
"group": "navigation@2"
}
],
"view/item/context": [
{
"command": "vscode-docker.images.selectGroupBy",
"when": "view == dockerExplorer && viewItem =~ /^imagesRootNode$/",
"group": "inline"
},
{
"command": "vscode-docker.acr.createRegistry",
"when": "view == dockerExplorer && viewItem == azureRegistryRootNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteImage",
"when": "view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteRegistry",
"when": "view == dockerExplorer && viewItem == azureRegistryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.deleteRepository",
"when": "view == dockerExplorer && viewItem == azureRepositoryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.pullImage",
"when": "view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.pullRepo",
"when": "view == dockerExplorer && viewItem == azureRepositoryNode",
"group": "default"
},
{
"command": "vscode-docker.acr.runTask",
"when": "view == dockerExplorer && viewItem == taskNode",
"group": "default"
},
{
"command": "vscode-docker.acr.showTask",
"when": "view == dockerExplorer && viewItem == taskNode",
"group": "default"
},
{
"command": "vscode-docker.acr.untagImage",
"when": "view == dockerExplorer && viewItem == azureImageTagNode",
"group": "default"
},
{
"command": "vscode-docker.acr.viewLogs",
"when": "view == dockerExplorer && viewItem =~ /^(azureRegistryNode|azureImageTagNode|taskNode)$/",
"group": "default"
},
{
"command": "vscode-docker.browseDockerHub",
"when": "view == dockerExplorer && viewItem =~ /^(dockerHubImageTagNode|dockerHubRepositoryNode|dockerHubOrgNode)$/",
"group": "default"
},
{
"command": "vscode-docker.browseAzurePortal",
"when": "view == dockerExplorer && viewItem =~ /^(azureRegistryNode|azureRepositoryNode|azureImageTagNode)$/",
"group": "default"
},
{
"command": "vscode-docker.connectCustomRegistry",
"when": "view == dockerExplorer && viewItem == customRootNode",
"group": "default"
},
{
"command": "vscode-docker.container.open-shell",
"when": "view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.remove",
"when": "view == dockerExplorer && viewItem =~ /^(stoppedLocalContainerNode|runningLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.restart",
"when": "view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|stoppedLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.show-logs",
"when": "view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|stoppedLocalContainerNode|containersRootNode)$/",
"group": "default"
},
{
"command": "vscode-docker.container.start",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.container.start.interactive",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.container.stop",
"when": "view == dockerExplorer && viewItem =~ /^(runningLocalContainerNode|containersRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.createWebApp",
"when": "view == dockerExplorer && viewItem =~ /^(azureImageTagNode|dockerHubImageTagNode|customImageTagNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.disconnectCustomRegistry",
"when": "view == dockerExplorer && viewItem =~ /^(customRegistryNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.dockerHubLogout",
"when": "view == dockerExplorer && viewItem == dockerHubRootNode",
"group": "5_default"
},
{
"command": "vscode-docker.image.inspect",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.push",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.remove",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.image.tag",
"when": "view == dockerExplorer && viewItem =~ /^(localImageNode|imagesRootNode)$/",
"group": "5_default"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"when": "view == dockerExplorer && viewItem =~ /^(customRegistryNode|azureRegistryNode|dockerHubOrgNode)$/",
"group": "5_default"
}
]
},
"debuggers": [
{
"type": "docker",
"label": "Docker: Node.js",
"configurationSnippets": [
{
"label": "Docker: Attach to Node",
"description": "Docker: Attach to Node",
"body": {
"type": "node",
"request": "attach",
"name": "Docker: Attach to Node",
"remoteRoot": "/usr/src/app"
}
}
]
},
{
"type": "docker-coreclr",
"label": "Docker: Launch .NET Core (Preview)",
"configurationSnippets": [
{
"label": "Docker: Launch .NET Core (Preview)",
"description": "Docker: Launch .NET Core (Preview)",
"body": {
"name": "Docker: Launch .NET Core (Preview)",
"type": "docker-coreclr",
"request": "launch",
"preLaunchTask": "build",
"dockerBuild": {},
"dockerRun": {}
}
}
],
"configurationAttributes": {
"launch": {
"properties": {
"appFolder": {
"type": "string",
"description": "Path to the folder for the application."
},
"appOutput": {
"type": "string",
"description": "Path to the output assembly for the application."
},
"appProject": {
"type": "string",
"description": "Path to the application project file."
},
"dockerBuild": {
"description": "Options for building the Docker image used for debugging.",
"properties": {
"args": {
"type": "object",
"description": "Build arguments applied to the Docker image used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"context": {
"type": "string",
"description": "Path to the Docker build context."
},
"dockerfile": {
"type": "string",
"description": "Path to the Dockerfile used for the build."
},
"labels": {
"type": "object",
"description": "Labels applied to the Docker image used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"tag": {
"type": "string",
"description": "Tag applied to the Docker image used for debugging."
},
"target": {
"type": "string",
"description": "Docker build target (stage) used for debugging."
}
}
},
"dockerRun": {
"description": "Options for running the Docker container used for debugging.",
"properties": {
"containerName": {
"type": "string",
"description": "Name of the container used for debugging."
},
"env": {
"type": "object",
"description": "Environment variables applied to the Docker container used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"envFiles": {
"type": "array",
"description": "Files of environment variables read in and applied to the Docker container used for debugging.",
"items": {
"type": "string"
}
},
"labels": {
"type": "object",
"description": "Labels applied to the Docker container used for debugging.",
"additionalProperties": {
"type": "string"
}
},
"network": {
"type": "string",
"description": "The network to which the container will be connected."
},
"networkAlias": {
"type": "string",
"description": "The network-scoped alias to assign to the container."
},
"ports": {
"type": "array",
"description": "Ports that are going to be mapped on the host.",
"items": {
"type": "object",
"properties": {
"hostPort": {
"type": "string",
"description": "Port number to be bound on the host."
},
"containerPort": {
"type": "string",
"description": "Port number of the container to be bound."
},
"protocol": {
"type": "string",
"description": "Specific protocol for the binding (`tcp | udp`).",
"enum": [
"tcp",
"udp"
]
},
"required": [
"containerPort"
]
}
}
},
"extraHosts": {
"type": "array",
"description": "Hosts to be added to the container's `hosts` file for DNS resolution.",
"items": {
"type": "object",
"properties": {
"hostname": {
"type": "string",
"description": "Hostname for dns resolution."
},
"ip": {
"type": "string",
"description": "IP associated to the hostname."
}
},
"required": [
"hostname",
"ip"
]
}
},
"volumes": {
"type": "array",
"description": "Volumes that are going to be mapped to the container.",
"items": {
"type": "object",
"properties": {
"localPath": {
"type": "string",
"description": "Path on local machine that will be mapped. The folder will be created if it does not exist."
},
"containerPath": {
"type": "string",
"description": "Path where the volume will be mapped within the container. The folder will be created if it does not exist."
},
"permissions": {
"type": "string",
"description": "Permissions for the container for the mapped volume, `rw` for read-write or `ro` for read-only.",
"enum": [
"rw",
"ro"
]
}
},
"required": [
"localPath",
"containerPath"
]
}
}
}
}
}
}
}
}
],
"languages": [
{
"id": "dockerfile",
"aliases": [
"Dockerfile"
],
"filenamePatterns": [
"*.dockerfile",
"Dockerfile"
]
},
{
"id": "ignore",
"filenames": [
".dockerignore"
]
}
],
"configuration": {
"type": "object",
"title": "Docker configuration options",
"properties": {
"docker.defaultRegistryPath": {
"type": "string",
"default": "",
"description": "Default registry and path when tagging an image"
},
"docker.showExplorer": {
"type": "boolean",
"default": true,
"description": "Show or hide the Explorer"
},
"docker.explorerRefreshInterval": {
"type": "number",
"default": 1000,
"description": "Explorer refresh interval, default is 1000ms"
},
"docker.groupImagesBy": {
"type": "string",
"default": "Repository",
"description": "How to group items in the treeview Images node",
"enum": [
"None",
"Repository",
"RepositoryName",
"ImageId"
]
},
"docker.imageBuildContextPath": {
"type": "string",
"default": "",
"description": "Build context PATH to pass to Docker build command"
},
"docker.truncateLongRegistryPaths": {
"type": "boolean",
"default": false,
"description": "Truncate long Image and Container registry paths in the Explorer"
},
"docker.truncateMaxLength": {
"type": "number",
"default": 10,
"description": "Maximum number of characters for long registry paths in the Explorer, including elipsis"
},
"docker.host": {
"type": "string",
"default": "",
"description": "Full host address to connect to (with protocol). Equivalent to setting the DOCKER_HOST environment variable"
},
"docker.importCertificates": {
"oneOf": [
{
"type": "boolean"
},
{
"type": "object",
"properties": {
"useCertificateStore": {
"type": "boolean",
"default": true,
"description": "On Mac and Windows, indicates whether to automatically import certificates from the system certificate store. Ignored on Linux."
},
"certificatePaths": {
"type": "array",
"items": {
"type": "string"
},
"default": [
"/etc/ssl/certs/ca-certificates",
"/etc/openssl/certs",
"/etc/pki/tls/certs",
"/usr/local/share/certs"
],
"description": "Paths to files or folders containing certificates to import. For Linux, the correct path to pick up system-wide certificates will depend on the distribution."
}
}
}
],
"default": false,
"description": "True causes the extension to attempt to find system-wide certificates, false indicates that the default Node.js trusted certificates list will be used. Use an object to get more fine-grained control."
},
"docker.languageserver.diagnostics.deprecatedMaintainer": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for the deprecated MAINTAINER instruction"
},
"docker.languageserver.diagnostics.emptyContinuationLine": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging empty continuation lines found in instructions that span multiple lines"
},
"docker.languageserver.diagnostics.directiveCasing": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for parser directives that are not written in lowercase"
},
"docker.languageserver.diagnostics.instructionCasing": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for instructions that are not written in uppercase"
},
"docker.languageserver.diagnostics.instructionCmdMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple CMD instructions"
},
"docker.languageserver.diagnostics.instructionEntrypointMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple ENTRYPOINT instructions"
},
"docker.languageserver.diagnostics.instructionHealthcheckMultiple": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for flagging a Dockerfile with multiple HEALTHCHECK instructions"
},
"docker.languageserver.diagnostics.instructionJSONInSingleQuotes": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for JSON instructions that are written incorrectly with single quotes"
},
"docker.languageserver.diagnostics.instructionWorkdirRelative": {
"scope": "resource",
"type": "string",
"default": "warning",
"enum": [
"ignore",
"warning",
"error"
],
"description": "Controls the diagnostic severity for WORKDIR instructions that do not point to an absolute path"
},
"docker.attachShellCommand.linuxContainer": {
"type": "string",
"default": "/bin/sh -c \"[ -e /bin/bash ] && /bin/bash || /bin/sh\"",
"description": "Attach command to use for Linux containers"
},
"docker.attachShellCommand.windowsContainer": {
"type": "string",
"default": "powershell",
"description": "Attach command to use for Windows containers"
},
"docker.promptOnSystemPrune": {
"type": "boolean",
"default": true,
"description": "Prompt for confirmation when running System Prune command"
},
"docker.dockerComposeBuild": {
"type": "boolean",
"default": true,
"description": "Run docker-compose with the --build argument, defaults to true"
},
"docker.dockerComposeDetached": {
"type": "boolean",
"default": true,
"description": "Run docker-compose with the --d (detached) argument, defaults to true"
}
}
},
"commands": [
{
"command": "vscode-docker.images.selectGroupBy",
"title": "Group Images By...",
"icon": {
"light": "images/SortingGrouping_16x.svg",
"dark": "images/SortingGrouping_16x.svg"
},
"category": "Docker"
},
{
"command": "vscode-docker.acr.createRegistry",
"title": "Create Azure Registry",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteImage",
"title": "Delete Azure Image",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteRegistry",
"title": "Delete Azure Registry",
"category": "Docker"
},
{
"command": "vscode-docker.acr.deleteRepository",
"title": "Delete Azure Repository",
"category": "Docker"
},
{
"command": "vscode-docker.acr.pullImage",
"title": "Pull Tag from Azure",
"category": "Docker"
},
{
"command": "vscode-docker.acr.pullRepo",
"title": "Pull Repository from Azure",
"description": "Pull all Image tags from an Azure Repository",
"category": "Docker"
},
{
"command": "vscode-docker.acr.quickBuild",
"title": "ACR Tasks: Build Image",
"description": "Queue an Azure build from a Dockerfile",
"category": "Docker"
},
{
"command": "vscode-docker.acr.runTask",
"title": "Run Task",
"category": "Docker"
},
{
"command": "vscode-docker.acr.runTaskFile",
"title": "Run ACR Task File",
"description": "Run an ACR task from a yaml file.",
"category": "Docker"
},
{
"command": "vscode-docker.acr.showTask",
"title": "Show Task Properties",
"category": "Docker"
},
{
"command": "vscode-docker.acr.untagImage",
"title": "Untag Azure Image",
"category": "Docker"
},
{
"command": "vscode-docker.acr.viewLogs",
"title": "View Task Logs",
"category": "Docker"
},
{
"command": "vscode-docker.api.configure",
"title": "Add Docker Files to Workspace (API)"
},
{
"command": "vscode-docker.browseDockerHub",
"title": "Browse in Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.browseAzurePortal",
"title": "Browse in the Azure Portal",
"category": "Docker"
},
{
"command": "vscode-docker.compose.down",
"title": "Compose Down",
"description": "Stops a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.compose.restart",
"title": "Compose Restart",
"description": "Restarts a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.compose.up",
"title": "Compose Up",
"description": "Starts a composition of containers",
"category": "Docker"
},
{
"command": "vscode-docker.configure",
"title": "Add Docker Files to Workspace",
"description": "Add Dockerfile, docker-compose.yml files",
"category": "Docker"
},
{
"command": "vscode-docker.connectCustomRegistry",
"title": "Connect to a Private Registry... (Preview)",
"category": "Docker"
},
{
"command": "vscode-docker.container.open-shell",
"title": "Attach Shell",
"description": "Open a terminal with an interactive shell for a running container",
"category": "Docker"
},
{
"command": "vscode-docker.container.remove",
"title": "Remove Container",
"description": "Remove a stopped container",
"category": "Docker"
},
{
"command": "vscode-docker.container.restart",
"title": "Restart Container",
"description": "Restart one or more containers",
"category": "Docker"
},
{
"command": "vscode-docker.container.show-logs",
"title": "Show Logs",
"description": "Show the logs of a running container",
"category": "Docker"
},
{
"command": "vscode-docker.container.start",
"title": "Run",
"description": "Starts a container from an image",
"category": "Docker"
},
{
"command": "vscode-docker.container.start.azurecli",
"title": "Azure CLI",
"description": "Starts a container from the Azure CLI image and runs it interactively",
"category": "Docker"
},
{
"command": "vscode-docker.container.start.interactive",
"title": "Run Interactive",
"description": "Starts a container from an image and runs it interactively",
"category": "Docker"
},
{
"command": "vscode-docker.container.stop",
"title": "Stop Container",
"description": "Stop a running container",
"category": "Docker"
},
{
"command": "vscode-docker.createWebApp",
"title": "Deploy Image to Azure App Service",
"category": "Docker"
},
{
"command": "vscode-docker.disconnectCustomRegistry",
"title": "Disconnect from Private Registry",
"category": "Docker"
},
{
"command": "vscode-docker.dockerHubLogin",
"title": "Log In to Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.dockerHubLogout",
"title": "Log Out of Docker Hub",
"category": "Docker"
},
{
"command": "vscode-docker.explorer.refresh",
"title": "Refresh Explorer",
"category": "Docker",
"icon": {
"light": "images/light/refresh.svg",
"dark": "images/dark/refresh.svg"
}
},
{
"command": "vscode-docker.image.build",
"title": "Build Image",
"description": "Build a Docker image from a Dockerfile",
"category": "Docker"
},
{
"command": "vscode-docker.image.inspect",
"title": "Inspect Image",
"description": "Inspect the metadata of a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.image.push",
"title": "Push",
"description": "Push an image to a registry",
"category": "Docker"
},
{
"command": "vscode-docker.image.remove",
"title": "Remove Image",
"description": "Remove a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.image.tag",
"title": "Tag Image",
"description": "Tag a Docker image",
"category": "Docker"
},
{
"command": "vscode-docker.setRegistryAsDefault",
"title": "Set as Default Registry Path",
"category": "Docker"
},
{
"command": "vscode-docker.system.prune",
"title": "System Prune",
"category": "Docker",
"icon": {
"light": "images/light/prune.svg",
"dark": "images/dark/prune.svg"
}
}
],
"views": {
"dockerView": [
{
"id": "dockerExplorer",
"name": "Explorer",
"when": "config.docker.showExplorer == true"
}
]
},
"viewsContainers": {
"activitybar": [
{
"icon": "images/docker.svg",
"id": "dockerView",
"title": "Docker"
}
]
}
},
"engines": {
"vscode": "^1.26.0"
},
"scripts": {
"vscode:prepublish": "npm run webpack-prod",
"build": "tsc -p ./",
"compile": "tsc -watch -p ./",
"package": "vsce package",
"lint": "tslint --project tsconfig.json -t verbose",
"lint-fix": "tslint --project tsconfig.json -t verbose --fix",
"postinstall": "node ./node_modules/vscode/bin/install",
"pretest": "npm run build && npm run webpack",
"test": "gulp test",
"all": "npm i && npm run lint && npm test",
"webpack": "gulp webpack-dev",
"webpack-prod": "gulp webpack-prod",
"webpack-profile": "webpack --profile --json --mode production > webpack-stats.json && echo Use http://webpack.github.io/analyse to analyze the stats"
},
"extensionDependencies": [
"vscode.docker",
"vscode.yaml"
],
"devDependencies": {
"@types/adm-zip": "^0.4.32",
"@types/deep-equal": "^1.0.1",
"@types/dockerode": "^2.5.12",
"@types/fs-extra": "^5.0.5",
"@types/glob": "5.0.35",
"@types/keytar": "^4.4.0",
"@types/mocha": "^5.2.6",
"@types/node": "^11.12.0",
"@types/request-promise-native": "^1.0.15",
"@types/semver": "^5.5.0",
"@types/string-replace-webpack-plugin": "^0.1.0",
"@types/xml2js": "^0.4.3",
"adm-zip": "^0.4.11",
"copy-webpack-plugin": "^4.5.4",
"gulp": "^4.0.0",
"mocha": "^5.2.0",
"mocha-junit-reporter": "^1.18.0",
"mocha-multi-reporters": "^1.1.7",
"string-replace-webpack-plugin": "^0.1.3",
"ts-node": "^7.0.1",
"tslint": "^5.14.0",
"tslint-microsoft-contrib": "^6.1.0",
"typescript": "^3.3.4000",
"umd-compat-loader": "^2.1.1",
"vsce": "^1.59.0",
"vscode": "^1.1.18",
"vscode-azureextensiondev": "^0.1.8",
"webpack": "^4.29.6",
"webpack-cli": "^3.3.0"
},
"dependencies": {
"adal-node": "^0.1.28",
"azure-arm-containerregistry": "^3.0.0",
"azure-arm-resource": "^2.0.0-preview",
"azure-arm-website": "^1.0.0-preview",
"azure-storage": "^2.8.1",
"clipboardy": "^1.2.3",
"deep-equal": "^1.0.1",
"dockerfile-language-server-nodejs": "^0.0.20",
"dockerode": "^2.5.8",
"fs-extra": "^6.0.1",
"glob": "7.1.2",
"gradle-to-js": "^1.2.1",
"mac-ca": "^1.0.4",
"moment": "^2.24.0",
"ms-rest": "^2.5.0",
"ms-rest-azure": "^2.6.0",
"opn": "^6.0.0",
"request": "^2.88.0",
"request-promise-native": "^1.0.5",
"semver": "^6.0.0",
"tar": "^4.4.6",
"vscode-azureextensionui": "^0.23.2",
"vscode-languageclient": "^5.1.1",
"win-ca": "^2.4.1",
"xml2js": "^0.4.19"
}
} The old one does not seem to have the metadata property set. I wasn't sure if installing from a vsix was the problem, so I tried the same exact steps with an old version of the azure storage extension, and it did have "metadata" set and it did update automatically. As I side note, I tried to install the old version directly from VS Code (instead of from a vsix), but no luck. |
@EricJizbaMSFT Thanks for the info. It is too late testing with old VSIX because
The trick I use to mimic rename scenario is as follows:
OR
When I followed above steps I could reproduce the reported issue that
This is regression because of the feature no reload of extension after install. Our extension host is treating these two extensions as different extensions when updated. This happens only during no reload case and once window is reloaded extensions are distinguished correctly. So workaround is to reload the window. I am working on the fix which will be available in insiders tomorrow and in stable next week. |
Filed separate issue for Install Previous version action error - #76253 |
@sandy081 We saw a bunch of issues, but didn't realize it only happened in the "no reload" case. I took a closer look at telemetry and it backs up your claim as well - thanks for all your help! |
To Verify:
|
I recently worked with the marketplace team to transfer an extension between publishers. Once I published the extension under the new publisher, VS Code recognized the extension needed to update and installed the extension under the new publisher.
The problem is that VS Code doesn't correctly uninstall the old extension so users who had the extension with the old publisher now have both extensions, which causes conflict when registering events.
VS Code should recognize a duplicate extension with conflicting publisher IDs and remove the previous/oldest version.
See: microsoft/vscode-docker#1008
The text was updated successfully, but these errors were encountered: