diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..135a09a402 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,72 @@ +# Contributing + +Have a container set up you're proud of and would like to share? Want to see some changes made to an existing definition? We love contributions and suggestions! Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.microsoft.com. + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. + +## Contributing a definition + +If you want to create a new definition: + +1. Fork and clone this repository + +2. Create a new folder in the `containers` directory. The name of the folder is effectively the **definition ID** and should follow the following format: + + ```` + -- + ```` + + You'll find many examples in the current `containers` folder. + +3. You can grab one of the templates from the `container-templates` folder to help you get an idea of what to contribute for different scenarios, but here's a quick summary of what you should include: + + ``` + 📁 -- + 📁 .vscode + 📄 devContainer.json + 📁 .devcontainer + 📄 Dockerfile (optional) + 📄 docker-compose.yml (optional) + 📄 ignore + 📁 test-project (optional) + 📄 README.md + ``` + + See [VS Code Remote's documentation](https://aka.ms/vscode-remote/docker) for information on the expected contents of `devContainer.json` and how it relates to other files listed above. + + Note that any additional assets can be included as needed, but keep in mind that these will overlay on top of an existing project. Anything you don't want added to a project should be referenced in [glob](https://facelessuser.github.io/wcmatch/glob/) form in `.devcontainer/ignore` with paths relative to the location of the `ignore` file. Create a `README.md` in the folder with a brief description of the purpose of the container definition and any manual steps required to use it. + +4. Commit your changes and submit a PR - we'll take a look at it, provide any needed feedback, and then merge it in! We appreciate any and all feedback!! + +## Developing and testing a definition + +VS Code Remote provides a straight forward development loop for creating and editing container definitions. Just follow these steps to get started: + +1. Create a definition folder and open it in VS Code +2. Edit the contents of the definition +3. Run the **Remote: Reopen Folder in Container** command +4. If this fails, click "Open folder locally" in the dialog that appears and go to step 2 +6. If it opens successfully but you don't like the contents, edit the contents from within the container and run the **Remote: Rebuild Container** command to make changes. + +Note that if you make major changes, Docker may occasionally not pick up your edits. If this happens, you can delete the existing container and image, open the folder locally, and go to step 2 above. Install the [Docker extension](https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker) locally (when not in a container) to make this easy. While you can use Docker from inside a container by forwarding the Docker unix socket and installing the CLI in the container (see [Docker-in-Docker](containers/docker-in-docker)), you'll likely be removing the container you are actually using so this approach will not work well in this case. + +Finally, after you get your container up and running, you can test it by adding test assets into the definition folder as long as they are referenced in the `.devcontainer/ignore` file in [glob](https://facelessuser.github.io/wcmatch/glob/) form ith paths relative to the location of the `ignore` file. By convention, most definitions place test assets in a `test-project` folder and this path is referenced in the template `ignore` files. + +## Speeding up container provisioning + +While using a `Dockerfile` is a convienent way to get going with a new container definition, this method can slow down the process of creating the dev container since it requires the image be built by anyone using it. If your definition is stable, we strongly reccomend building and publishing your image to [DockerHub](https://hub.docker.com) or [Azure Container Registry](https://azure.microsoft.com/en-us/services/container-registry/) instead. + +Once you've published your container image, just update `devContainer.json` to reference the image instead of the `Dockerfile`. See `container-templates/image` for an example. + +## License + +Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the MIT License. See [LICENSE](../LICENSE). diff --git a/README.md b/README.md index 36516d19d3..410e9d98ad 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ You can either: - Run **Remote: Create Container Configuration File...** command in VS Code and pick a definition. The appropriate files will then be added to your project. -- Manually copy the contents of one of the `containers` sub-folders into your project. When manually copying, note that some definitions contain a `test-project` folder and/or `.vscode/launch.json`, `.vscode/settings.json`, or `.vscode/tasks.json` files. These and `README.md` and `.vscodeignore` can typically be omitted. +- Manually copy the contents of one of the `containers` sub-folders into your project. Copy the `.devcontainer` folder and `.vscode/devContainer.json` into your project and you should be ready to go! ## Adding a definition to an existing public or private repo @@ -41,73 +41,15 @@ You can also optionally have VS Code recommend developers install the Remote Dev ## Contributing -Have a container set up you're proud of and would like to share? Want to see some changes made to an existing definition? This project welcomes contributions and suggestions. Most contributions require you to agree to a -Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us -the rights to use your contribution. For details, visit https://cla.microsoft.com. +Find a bug? Have a suggestion? Have a container set up you're proud of and would like to share? Want to see some changes made to an existing definition? We love all contributions and suggestions! See [CONTRIBUTING.md](CONTRIBUTING.md) for details on what to do. -When you submit a pull request, a CLA-bot will automatically determine whether you need to provide -a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions -provided by the bot. You will only need to do this once across all repos using our CLA. +## Code of Conduct This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. -### Contributing a definition - -If you want to create a new definition: - -1. Fork and clone this repository - -2. Create a new folder in the `containers` directory. The name of the folder is effectively the **definition ID** and should follow the following format: - - ```` - -- - ```` - - You'll find many examples in the current `containers` folder. - -3. You can grab one of the templates from the `container-templates` folder to help you get an idea of what to contribute for different scenarios, but here's a quick summary of what you should include: - - ``` - 📁 -- - 📁 .vscode - 📄 devContainer.json - 📁 test-project (optional) - 📄 dev-container.dockerfile (optional) - 📄 docker-compose.dev-container.yml (optional) - 📄 .vscodeignore - 📄 README.md - ``` - - See [VS Code Remote's documentation](https://aka.ms/vscode-remote/docker) for information on the expected contents of `devContainer.json` and how it relates to other files listed above. - - Note that any additional assets can be included as needed, but keep in mind that these will overlay on top of an existing project. Anything you don't want added to a project should be referenced in [glob](https://facelessuser.github.io/wcmatch/glob/) form in `.vscodeignore`. Create a `README.md` in the folder with a brief description of the purpose of the container definition and any manual steps required to use it. - -4. Commit your changes and submit a PR - we'll take a look at it, provide any needed feedback, and then merge it in! We appreciate any and all feedback!! - -### Developing and testing a definition - -VS Code Remote provides a straight forward development loop for creating and editing container definitions. Just follow these steps to get started: - -1. Create a definition folder and open it in VS Code -2. Edit the contents of the definition -3. Run the **Remote: Reopen Folder in Container** command -4. If this fails, click "Open folder locally" in the dialog that appears and go to step 2 -6. If it opens successfully but you don't like the contents, edit the contents from within the container and run the **Remote: Rebuild Container** command to make changes. - -Note that if you make major changes, Docker may occasionally not pick up your edits. If this happens, you can delete the existing container and image, open the folder locally, and go to step 2 above. Install the [Docker extension](https://marketplace.visualstudio.com/items?itemName=PeterJausovec.vscode-docker) locally (when not in a container) to make this easy. While you can use Docker from inside a container by forwarding the Docker unix socket and installing the CLI in the container (see [Docker-in-Docker](containers/docker-in-docker)), you'll likely be removing the container you are actually using so this approach will not work well in this case. - -Finally, after you get your container up and running, you can test it by adding test assets into the definition folder as long as they are referenced in the `.vscodeignore` file in [glob](https://facelessuser.github.io/wcmatch/glob/) form. By convention, most definitions place test assets in a `test-project` folder. - -### Speeding up container provisioning - -While using a `Dockerfile` is a convienent way to get going with a new container definition, this method can slow down the process of creating the dev container since it requires the image be built by anyone using it. If your definition is stable, we strongly reccomend building and publishing your image to [DockerHub](https://hub.docker.com) or [Azure Container Registry](https://azure.microsoft.com/en-us/services/container-registry/) instead. - -Once you've published your container image, just update `devContainer.json` to reference the image instead of the `Dockerfile`. See `container-templates/image` for an example. - ## License -Copyright (c) Microsoft Corporation. All rights reserved. - +Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the MIT License. See [LICENSE](LICENSE). diff --git a/container-templates/docker-compose/dev-container.dockerfile b/container-templates/docker-compose/.devcontainer/Dockerfile similarity index 100% rename from container-templates/docker-compose/dev-container.dockerfile rename to container-templates/docker-compose/.devcontainer/Dockerfile diff --git a/container-templates/docker-compose/docker-compose.dev-container.yml b/container-templates/docker-compose/.devcontainer/docker-compose.yml similarity index 87% rename from container-templates/docker-compose/docker-compose.dev-container.yml rename to container-templates/docker-compose/.devcontainer/docker-compose.yml index 5cc76d6907..cef03ab193 100644 --- a/container-templates/docker-compose/docker-compose.dev-container.yml +++ b/container-templates/docker-compose/.devcontainer/docker-compose.yml @@ -8,7 +8,7 @@ services: your-service-name-here: build: context: . - dockerfile: dev-container.dockerfile # Using a Dockerfile is optional, but included for completeness. + dockerfile: Dockerfile # Using a Dockerfile is optional, but included for completeness. ports: - "3000:3000" # Application port to forward diff --git a/container-templates/docker-compose/.devcontainer/ignore b/container-templates/docker-compose/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/container-templates/docker-compose/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/container-templates/docker-compose/.vscode/devContainer.json b/container-templates/docker-compose/.vscode/devContainer.json index 252e451312..25d64ad6a7 100644 --- a/container-templates/docker-compose/.vscode/devContainer.json +++ b/container-templates/docker-compose/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Dev Container Definition Template - Docker Compose", - "dockerComposeFile": "docker-compose.dev-container.yml", + "dockerComposeFile": "../.devcontainer/docker-compose.yml", "service": "your-service-name-here", "volume": "app", "extensions": [ diff --git a/container-templates/dockerfile/dev-container.dockerfile b/container-templates/dockerfile/.devcontainer/Dockerfile similarity index 100% rename from container-templates/dockerfile/dev-container.dockerfile rename to container-templates/dockerfile/.devcontainer/Dockerfile diff --git a/container-templates/docker-compose/.vscodeignore b/container-templates/dockerfile/.devcontainer/ignore similarity index 100% rename from container-templates/docker-compose/.vscodeignore rename to container-templates/dockerfile/.devcontainer/ignore diff --git a/container-templates/dockerfile/.vscode/devContainer.json b/container-templates/dockerfile/.vscode/devContainer.json index 844eea8fbf..a346f34a7d 100644 --- a/container-templates/dockerfile/.vscode/devContainer.json +++ b/container-templates/dockerfile/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Dev Container Definition Template - Dockerfile", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 3000, "extensions": [ "mutantdino.resourcemonitor" diff --git a/container-templates/dockerfile/.vscodeignore b/container-templates/dockerfile/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/container-templates/dockerfile/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/container-templates/image/.devcontainer/ignore b/container-templates/image/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/container-templates/image/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/container-templates/image/.vscodeignore b/container-templates/image/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/container-templates/image/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/azure-cli/dev-container.dockerfile b/containers/azure-cli/.devcontainer/Dockerfile similarity index 100% rename from containers/azure-cli/dev-container.dockerfile rename to containers/azure-cli/.devcontainer/Dockerfile diff --git a/containers/azure-cli/.devcontainer/ignore b/containers/azure-cli/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/azure-cli/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/azure-cli/.vscode/devContainer.json b/containers/azure-cli/.vscode/devContainer.json index 4123c0062f..295ceaa1d0 100644 --- a/containers/azure-cli/.vscode/devContainer.json +++ b/containers/azure-cli/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Azure CLI", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-vscode.azurecli" ] diff --git a/containers/azure-cli/.vscodeignore b/containers/azure-cli/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/azure-cli/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/azure-functions-node-8/dev-container.dockerfile b/containers/azure-functions-node-8/.devcontainer/Dockerfile similarity index 100% rename from containers/azure-functions-node-8/dev-container.dockerfile rename to containers/azure-functions-node-8/.devcontainer/Dockerfile diff --git a/containers/azure-functions-node-8/.devcontainer/ignore b/containers/azure-functions-node-8/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/azure-functions-node-8/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/azure-functions-node-8/.vscode/devContainer.json b/containers/azure-functions-node-8/.vscode/devContainer.json index c4631df698..4b8e62a14e 100644 --- a/containers/azure-functions-node-8/.vscode/devContainer.json +++ b/containers/azure-functions-node-8/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Azure Functions & Node.js", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 7071, "extensions": [ "ms-azuretools.vscode-azurefunctions" diff --git a/containers/azure-functions-node-8/.vscodeignore b/containers/azure-functions-node-8/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/azure-functions-node-8/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/azure-hdinsight-python-3/dev-container.dockerfile b/containers/azure-hdinsight-python-3/.devcontainer/Dockerfile similarity index 100% rename from containers/azure-hdinsight-python-3/dev-container.dockerfile rename to containers/azure-hdinsight-python-3/.devcontainer/Dockerfile diff --git a/containers/azure-hdinsight-python-3/.devcontainer/ignore b/containers/azure-hdinsight-python-3/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/azure-hdinsight-python-3/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/azure-hdinsight-python-3/.vscode/devContainer.json b/containers/azure-hdinsight-python-3/.vscode/devContainer.json index 98ade788eb..dc74c4a8a3 100644 --- a/containers/azure-hdinsight-python-3/.vscode/devContainer.json +++ b/containers/azure-hdinsight-python-3/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Azure HDInsight", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../devcontainer/Dockerfile", "extensions": [ "mshdinsight.azure-hdinsight" ] diff --git a/containers/azure-hdinsight-python-3/.vscodeignore b/containers/azure-hdinsight-python-3/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/azure-hdinsight-python-3/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/azure-machine-learning-python-3/dev-container.dockerfile b/containers/azure-machine-learning-python-3/.devcontainer/Dockerfile similarity index 100% rename from containers/azure-machine-learning-python-3/dev-container.dockerfile rename to containers/azure-machine-learning-python-3/.devcontainer/Dockerfile diff --git a/containers/azure-machine-learning-python-3/.devcontainer/ignore b/containers/azure-machine-learning-python-3/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/azure-machine-learning-python-3/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/azure-machine-learning-python-3/.vscode/devContainer.json b/containers/azure-machine-learning-python-3/.vscode/devContainer.json index b12be6e470..adb5360ebb 100644 --- a/containers/azure-machine-learning-python-3/.vscode/devContainer.json +++ b/containers/azure-machine-learning-python-3/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Azure Machine Learning", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-toolsai.vscode-ai" ], diff --git a/containers/azure-machine-learning-python-3/.vscodeignore b/containers/azure-machine-learning-python-3/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/azure-machine-learning-python-3/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/azure-terraform/dev-container.dockerfile b/containers/azure-terraform/.devcontainer/Dockerfile similarity index 100% rename from containers/azure-terraform/dev-container.dockerfile rename to containers/azure-terraform/.devcontainer/Dockerfile diff --git a/containers/azure-terraform/.devcontainer/ignore b/containers/azure-terraform/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/azure-terraform/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/azure-terraform/.vscode/devContainer.json b/containers/azure-terraform/.vscode/devContainer.json index 6b1866a01b..2bb8949b7d 100644 --- a/containers/azure-terraform/.vscode/devContainer.json +++ b/containers/azure-terraform/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Azure Terraform", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "mauve.terraform", "ms-azuretools.azureterraform" diff --git a/containers/azure-terraform/.vscodeignore b/containers/azure-terraform/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/azure-terraform/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/cpp/dev-container.dockerfile b/containers/cpp/.devcontainer/Dockerfile similarity index 100% rename from containers/cpp/dev-container.dockerfile rename to containers/cpp/.devcontainer/Dockerfile diff --git a/containers/cpp/.devcontainer/ignore b/containers/cpp/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/cpp/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/cpp/.vscode/devContainer.json b/containers/cpp/.vscode/devContainer.json index 3b3e0356fb..6a6c50a518 100644 --- a/containers/cpp/.vscode/devContainer.json +++ b/containers/cpp/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "C++", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-vscode.cpptools" ], diff --git a/containers/cpp/.vscodeignore b/containers/cpp/.vscodeignore deleted file mode 100644 index e0c81596d3..0000000000 --- a/containers/cpp/.vscodeignore +++ /dev/null @@ -1,7 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json -.vscode/ipch diff --git a/containers/dart-web/dev-container.dockerfile b/containers/dart-web/.devcontainer/Dockerfile similarity index 100% rename from containers/dart-web/dev-container.dockerfile rename to containers/dart-web/.devcontainer/Dockerfile diff --git a/containers/dart-web/.devcontainer/ignore b/containers/dart-web/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/dart-web/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/dart-web/.vscode/devContainer.json b/containers/dart-web/.vscode/devContainer.json index 5924cec98a..2bf69a3fa4 100644 --- a/containers/dart-web/.vscode/devContainer.json +++ b/containers/dart-web/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Dart", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 8080, "extensions": [ "dart-code.dart-code", diff --git a/containers/dart-web/.vscodeignore b/containers/dart-web/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/dart-web/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/docker-in-docker-compose/dev-container.dockerfile b/containers/docker-in-docker-compose/.devcontainer/Dockerfile similarity index 100% rename from containers/docker-in-docker-compose/dev-container.dockerfile rename to containers/docker-in-docker-compose/.devcontainer/Dockerfile diff --git a/containers/docker-in-docker-compose/docker-compose.dev-container.yml b/containers/docker-in-docker-compose/.devcontainer/docker-compose.yml similarity index 94% rename from containers/docker-in-docker-compose/docker-compose.dev-container.yml rename to containers/docker-in-docker-compose/.devcontainer/docker-compose.yml index ef18b482c0..c694672cd1 100644 --- a/containers/docker-in-docker-compose/docker-compose.dev-container.yml +++ b/containers/docker-in-docker-compose/.devcontainer/docker-compose.yml @@ -8,7 +8,7 @@ services: docker-in-docker: build: context: . - dockerfile: dev-container.dockerfile + dockerfile: Dockerfile volumes: - .:/app diff --git a/containers/docker-in-docker-compose/.devcontainer/ignore b/containers/docker-in-docker-compose/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/docker-in-docker-compose/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/docker-in-docker-compose/.vscode/devContainer.json b/containers/docker-in-docker-compose/.vscode/devContainer.json index 1b428f67a8..28565d4c3f 100644 --- a/containers/docker-in-docker-compose/.vscode/devContainer.json +++ b/containers/docker-in-docker-compose/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Docker-in-Docker", - "dockerComposeFile": "docker-compose.dev-container.yml", + "dockerComposeFile": "../.devcontainer/docker-compose.yml", "service": "docker-in-docker", "volume": "app", "extensions": [ diff --git a/containers/docker-in-docker-compose/.vscodeignore b/containers/docker-in-docker-compose/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/docker-in-docker-compose/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/docker-in-docker/dev-container.dockerfile b/containers/docker-in-docker/.devcontainer/Dockerfile similarity index 100% rename from containers/docker-in-docker/dev-container.dockerfile rename to containers/docker-in-docker/.devcontainer/Dockerfile diff --git a/containers/docker-in-docker/.devcontainer/ignore b/containers/docker-in-docker/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/docker-in-docker/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/docker-in-docker/.vscode/devContainer.json b/containers/docker-in-docker/.vscode/devContainer.json index 7bc2bacc96..833faf5d00 100644 --- a/containers/docker-in-docker/.vscode/devContainer.json +++ b/containers/docker-in-docker/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Docker-in-Docker", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "peterjausovec.vscode-docker" ], diff --git a/containers/docker-in-docker/.vscodeignore b/containers/docker-in-docker/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/docker-in-docker/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/dotnetcore-2.2-fsharp/dev-container.dockerfile b/containers/dotnetcore-2.2-fsharp/.devcontainer/Dockerfile similarity index 75% rename from containers/dotnetcore-2.2-fsharp/dev-container.dockerfile rename to containers/dotnetcore-2.2-fsharp/.devcontainer/Dockerfile index 92b99b852b..2ddc134498 100644 --- a/containers/dotnetcore-2.2-fsharp/dev-container.dockerfile +++ b/containers/dotnetcore-2.2-fsharp/.devcontainer/Dockerfile @@ -5,8 +5,9 @@ FROM microsoft/dotnet:2.2-sdk -# Alias xterm to bash if external console is triggered -RUN echo "alias xterm=bash" >> /root/.bashrc +# Copy endpoint specific user settings overrides into container to specify +# .NET Core should be used as the runtime. +COPY settings.vscode.json /root/.vscode-remote/data/User/settings.json # Install git RUN apt-get update && apt-get -y install git diff --git a/containers/dotnetcore-2.2-fsharp/.devcontainer/ignore b/containers/dotnetcore-2.2-fsharp/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/dotnetcore-2.2-fsharp/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/dotnetcore-2.2-fsharp/.devcontainer/settings.vscode.json b/containers/dotnetcore-2.2-fsharp/.devcontainer/settings.vscode.json new file mode 100644 index 0000000000..5b238faeff --- /dev/null +++ b/containers/dotnetcore-2.2-fsharp/.devcontainer/settings.vscode.json @@ -0,0 +1,3 @@ +{ + "FSharp.fsacRuntime":"netcore" +} \ No newline at end of file diff --git a/containers/dotnetcore-2.2-fsharp/.vscode/devContainer.json b/containers/dotnetcore-2.2-fsharp/.vscode/devContainer.json index 0a1416665f..f6ea2228ba 100644 --- a/containers/dotnetcore-2.2-fsharp/.vscode/devContainer.json +++ b/containers/dotnetcore-2.2-fsharp/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "F#", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "Ionide.Ionide-fsharp", "ms-vscode.csharp" diff --git a/containers/dotnetcore-2.2-fsharp/.vscode/settings.json b/containers/dotnetcore-2.2-fsharp/.vscode/settings.json index bf3bba5913..cefd1b445f 100644 --- a/containers/dotnetcore-2.2-fsharp/.vscode/settings.json +++ b/containers/dotnetcore-2.2-fsharp/.vscode/settings.json @@ -1,4 +1,3 @@ { - "FSharp.fsacRuntime":"netcore", "razor.disabled": true } \ No newline at end of file diff --git a/containers/dotnetcore-2.2-fsharp/.vscodeignore b/containers/dotnetcore-2.2-fsharp/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/dotnetcore-2.2-fsharp/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/dotnetcore-2.2/dev-container.dockerfile b/containers/dotnetcore-2.2/.devcontainer/Dockerfile similarity index 100% rename from containers/dotnetcore-2.2/dev-container.dockerfile rename to containers/dotnetcore-2.2/.devcontainer/Dockerfile diff --git a/containers/dotnetcore-2.2/.devcontainer/ignore b/containers/dotnetcore-2.2/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/dotnetcore-2.2/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/dotnetcore-2.2/.vscode/devContainer.json b/containers/dotnetcore-2.2/.vscode/devContainer.json index 4cf73279ca..b7abf3f773 100644 --- a/containers/dotnetcore-2.2/.vscode/devContainer.json +++ b/containers/dotnetcore-2.2/.vscode/devContainer.json @@ -1,6 +1,6 @@ { - "name": ".NET Core", - "dockerFile": "dev-container.dockerfile", + "name": ".NET Core 2.2", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 8090, "extensions": [ "ms-vscode.csharp" diff --git a/containers/dotnetcore-2.2/.vscodeignore b/containers/dotnetcore-2.2/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/dotnetcore-2.2/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/go/dev-container.dockerfile b/containers/go/.devcontainer/Dockerfile similarity index 100% rename from containers/go/dev-container.dockerfile rename to containers/go/.devcontainer/Dockerfile diff --git a/containers/go/.vscode/devContainer.json b/containers/go/.vscode/devContainer.json index d77bf0b421..5a5da00201 100644 --- a/containers/go/.vscode/devContainer.json +++ b/containers/go/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Go", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-vscode.go" ], diff --git a/containers/java-8-maven/dev-container.dockerfile b/containers/java-8-maven/.devcontainer/Dockerfile similarity index 100% rename from containers/java-8-maven/dev-container.dockerfile rename to containers/java-8-maven/.devcontainer/Dockerfile diff --git a/containers/java-8-maven/.devcontainer/ignore b/containers/java-8-maven/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/java-8-maven/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/java-8-maven/.vscode/devContainer.json b/containers/java-8-maven/.vscode/devContainer.json index 4265d6ff3d..639c777428 100644 --- a/containers/java-8-maven/.vscode/devContainer.json +++ b/containers/java-8-maven/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Java", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "vscjava.vscode-java-pack" ] diff --git a/containers/java-8-maven/.vscodeignore b/containers/java-8-maven/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/java-8-maven/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/javascript-node-8-mongo/dev-container.dockerfile b/containers/javascript-node-8-mongo/.devcontainer/Dockerfile similarity index 100% rename from containers/javascript-node-8-mongo/dev-container.dockerfile rename to containers/javascript-node-8-mongo/.devcontainer/Dockerfile diff --git a/containers/javascript-node-8-mongo/docker-compose.dev-container.yml b/containers/javascript-node-8-mongo/.devcontainer/docker-compose.yml similarity index 92% rename from containers/javascript-node-8-mongo/docker-compose.dev-container.yml rename to containers/javascript-node-8-mongo/.devcontainer/docker-compose.yml index 001da32efc..5aaa00a122 100644 --- a/containers/javascript-node-8-mongo/docker-compose.dev-container.yml +++ b/containers/javascript-node-8-mongo/.devcontainer/docker-compose.yml @@ -8,7 +8,7 @@ services: web: build: context: . - dockerfile: dev-container.dockerfile + dockerfile: Dockerfile volumes: - .:/app ports: diff --git a/containers/javascript-node-8-mongo/.devcontainer/ignore b/containers/javascript-node-8-mongo/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/javascript-node-8-mongo/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/javascript-node-8-mongo/.vscode/devContainer.json b/containers/javascript-node-8-mongo/.vscode/devContainer.json index 4073ed0340..1ddcf99a29 100644 --- a/containers/javascript-node-8-mongo/.vscode/devContainer.json +++ b/containers/javascript-node-8-mongo/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Node.js & Mongo DB", - "dockerComposeFile": "docker-compose.dev-container.yml", + "dockerComposeFile": "../.devcontainer/docker-compose.yml", "service": "web", "volume": "app", "extensions": [ diff --git a/containers/javascript-node-8/dev-container.dockerfile b/containers/javascript-node-8/.devcontainer/Dockerfile similarity index 100% rename from containers/javascript-node-8/dev-container.dockerfile rename to containers/javascript-node-8/.devcontainer/Dockerfile diff --git a/containers/javascript-node-8/.devcontainer/ignore b/containers/javascript-node-8/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/javascript-node-8/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/javascript-node-8/.vscode/devContainer.json b/containers/javascript-node-8/.vscode/devContainer.json index 2f1f164fca..72a772e663 100644 --- a/containers/javascript-node-8/.vscode/devContainer.json +++ b/containers/javascript-node-8/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Node.js 8", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 3000, "extensions": [ "dbaeumer.vscode-eslint" diff --git a/containers/javascript-node-8/.vscodeignore b/containers/javascript-node-8/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/javascript-node-8/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/kubernetes-helm/dev-container.dockerfile b/containers/kubernetes-helm/.devcontainer/Dockerfile similarity index 100% rename from containers/kubernetes-helm/dev-container.dockerfile rename to containers/kubernetes-helm/.devcontainer/Dockerfile diff --git a/containers/kubernetes-helm/.devcontainer/ignore b/containers/kubernetes-helm/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/kubernetes-helm/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/kubernetes-helm/.vscode/devContainer.json b/containers/kubernetes-helm/.vscode/devContainer.json index 9922c26a68..ac24c65a13 100644 --- a/containers/kubernetes-helm/.vscode/devContainer.json +++ b/containers/kubernetes-helm/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Kubernetes", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "peterjausovec.vscode-docker", "ms-kubernetes-tools.vscode-kubernetes-tools" diff --git a/containers/kubernetes-helm/.vscodeignore b/containers/kubernetes-helm/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/kubernetes-helm/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/latex/.devcontainer/ignore b/containers/latex/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/latex/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/latex/.vscodeignore b/containers/latex/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/latex/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/php-7/dev-container.dockerfile b/containers/php-7/.devcontainer/Dockerfile similarity index 100% rename from containers/php-7/dev-container.dockerfile rename to containers/php-7/.devcontainer/Dockerfile diff --git a/containers/php-7/.devcontainer/ignore b/containers/php-7/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/php-7/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/php-7/.vscode/devContainer.json b/containers/php-7/.vscode/devContainer.json index e9919e2ce3..71d1b34ca0 100644 --- a/containers/php-7/.vscode/devContainer.json +++ b/containers/php-7/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "PHP", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "felixfbecker.php-debug", "felixfbecker.php-intellisense" diff --git a/containers/php-7/.vscodeignore b/containers/php-7/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/php-7/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/plantuml/dev-container.dockerfile b/containers/plantuml/.devcontainer/Dockerfile similarity index 100% rename from containers/plantuml/dev-container.dockerfile rename to containers/plantuml/.devcontainer/Dockerfile diff --git a/containers/plantuml/.devcontainer/ignore b/containers/plantuml/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/plantuml/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/plantuml/.vscode/devContainer.json b/containers/plantuml/.vscode/devContainer.json index 0faf619b16..d0cf62ba2c 100644 --- a/containers/plantuml/.vscode/devContainer.json +++ b/containers/plantuml/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "PlantUML", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "jebbs.plantuml" ] diff --git a/containers/plantuml/.vscodeignore b/containers/plantuml/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/plantuml/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/powershell/dev-container.dockerfile b/containers/powershell/.devcontainer/Dockerfile similarity index 100% rename from containers/powershell/dev-container.dockerfile rename to containers/powershell/.devcontainer/Dockerfile diff --git a/containers/powershell/.devcontainer/ignore b/containers/powershell/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/powershell/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/powershell/.vscodeignore b/containers/powershell/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/powershell/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/python-2/dev-container.dockerfile b/containers/python-2/.devcontainer/Dockerfile similarity index 80% rename from containers/python-2/dev-container.dockerfile rename to containers/python-2/.devcontainer/Dockerfile index 6ba017e481..95e86fef8c 100644 --- a/containers/python-2/dev-container.dockerfile +++ b/containers/python-2/.devcontainer/Dockerfile @@ -5,6 +5,9 @@ FROM python:2-slim +# Copy endpoint specific user settings overrides into container to specify Python path +COPY settings.vscode.json /root/.vscode-remote/data/User/settings.json + RUN pip install pylint # Install git diff --git a/containers/python-2/.devcontainer/ignore b/containers/python-2/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/python-2/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/python-2/.vscode/settings.json b/containers/python-2/.devcontainer/settings.vscode.json similarity index 100% rename from containers/python-2/.vscode/settings.json rename to containers/python-2/.devcontainer/settings.vscode.json diff --git a/containers/python-2/.vscode/devContainer.json b/containers/python-2/.vscode/devContainer.json index 5a674831df..45917ee1a6 100644 --- a/containers/python-2/.vscode/devContainer.json +++ b/containers/python-2/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Python 2", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-python.python", "LittleFoxTeam.vscode-python-test-adapter" diff --git a/containers/python-2/.vscodeignore b/containers/python-2/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/python-2/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/python-3-django/dev-container.dockerfile b/containers/python-3-django/.devcontainer/Dockerfile similarity index 100% rename from containers/python-3-django/dev-container.dockerfile rename to containers/python-3-django/.devcontainer/Dockerfile diff --git a/containers/python-3-django/.devcontainer/ignore b/containers/python-3-django/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/python-3-django/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/python-3-django/requirements.txt b/containers/python-3-django/.devcontainer/requirements.txt similarity index 100% rename from containers/python-3-django/requirements.txt rename to containers/python-3-django/.devcontainer/requirements.txt diff --git a/containers/python-3-django/.vscode/devContainer.json b/containers/python-3-django/.vscode/devContainer.json index 729c7ccffb..1fab4dd713 100644 --- a/containers/python-3-django/.vscode/devContainer.json +++ b/containers/python-3-django/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Django", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 8080, "extensions": [ "ms-python.python", diff --git a/containers/python-3-django/.vscodeignore b/containers/python-3-django/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/python-3-django/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/python-3-flask-redis/dev-container.dockerfile b/containers/python-3-flask-redis/.devcontainer/Dockerfile similarity index 100% rename from containers/python-3-flask-redis/dev-container.dockerfile rename to containers/python-3-flask-redis/.devcontainer/Dockerfile diff --git a/containers/python-3-flask-redis/docker-compose.dev-container.yml b/containers/python-3-flask-redis/.devcontainer/docker-compose.yml similarity index 92% rename from containers/python-3-flask-redis/docker-compose.dev-container.yml rename to containers/python-3-flask-redis/.devcontainer/docker-compose.yml index 54b8964c36..b186dadafc 100644 --- a/containers/python-3-flask-redis/docker-compose.dev-container.yml +++ b/containers/python-3-flask-redis/.devcontainer/docker-compose.yml @@ -8,7 +8,7 @@ services: web: build: context: . - dockerfile: dev-container.dockerfile + dockerfile: Dockerfile ports: - "5000:5000" volumes: diff --git a/containers/python-3-flask-redis/.devcontainer/ignore b/containers/python-3-flask-redis/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/python-3-flask-redis/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/python-3-flask-redis/requirements.txt b/containers/python-3-flask-redis/.devcontainer/requirements.txt similarity index 100% rename from containers/python-3-flask-redis/requirements.txt rename to containers/python-3-flask-redis/.devcontainer/requirements.txt diff --git a/containers/python-3-flask-redis/.vscode/devContainer.json b/containers/python-3-flask-redis/.vscode/devContainer.json index 640087b414..b484a6f800 100644 --- a/containers/python-3-flask-redis/.vscode/devContainer.json +++ b/containers/python-3-flask-redis/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Python & Redis", - "dockerComposeFile": "docker-compose.dev-container.yml", + "dockerComposeFile": "../.devcontainer/docker-compose.yml", "service": "web", "volume": "app", "extensions": [ diff --git a/containers/python-3-flask-redis/.vscodeignore b/containers/python-3-flask-redis/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/python-3-flask-redis/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/python-3-jupyter-pyspark/.devcontainer/Dockerfile b/containers/python-3-jupyter-pyspark/.devcontainer/Dockerfile new file mode 100644 index 0000000000..7b81ba9f78 --- /dev/null +++ b/containers/python-3-jupyter-pyspark/.devcontainer/Dockerfile @@ -0,0 +1,24 @@ +#----------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE in the project root for license information. +#----------------------------------------------------------------------------------------- + +FROM jupyter/pyspark-notebook + +USER root + +RUN pip install pylint + +# Copy jupyter_notebook_config.py with token that matches settings +COPY jupyter_notebook_config.py /home/jovyan/.jupyter/jupyter_notebook_config.py + +# Copy default endpoint specific user settings overrides into container to specify Python path, token +COPY settings.vscode.json /home/jovyan/.vscode-remote/data/User/settings.json + +# Install git +RUN apt-get update && apt-get -y install git + +# Clean up +RUN apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* diff --git a/containers/python-3-jupyter-pyspark/docker-compose.dev-container.yml b/containers/python-3-jupyter-pyspark/.devcontainer/docker-compose.yml similarity index 64% rename from containers/python-3-jupyter-pyspark/docker-compose.dev-container.yml rename to containers/python-3-jupyter-pyspark/.devcontainer/docker-compose.yml index b6da2e8a7f..8259ee82ab 100644 --- a/containers/python-3-jupyter-pyspark/docker-compose.dev-container.yml +++ b/containers/python-3-jupyter-pyspark/.devcontainer/docker-compose.yml @@ -3,13 +3,17 @@ # Licensed under the MIT License. See LICENSE in the project root for license information. #----------------------------------------------------------------------------------------- +# Using Docker Compose so VS Code does not override the default command and the container +# stays running after VS Code stops so you can access Jupyter Notebooks via port 8888. + version: '3' services: jupyter: - image: jupyter/pyspark-notebook + build: + context: . + dockerfile: Dockerfile ports: - "8888:8888" volumes: - .:/notebook - - ./.jupyter:/home/jovyan/.jupyter diff --git a/containers/python-3-jupyter-pyspark/.devcontainer/ignore b/containers/python-3-jupyter-pyspark/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/python-3-jupyter-pyspark/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/python-3-jupyter-pyspark/.jupyter/jupyter_notebook_config.py b/containers/python-3-jupyter-pyspark/.devcontainer/jupyter_notebook_config.py similarity index 100% rename from containers/python-3-jupyter-pyspark/.jupyter/jupyter_notebook_config.py rename to containers/python-3-jupyter-pyspark/.devcontainer/jupyter_notebook_config.py diff --git a/containers/python-3-jupyter-pyspark/.devcontainer/settings.vscode.json b/containers/python-3-jupyter-pyspark/.devcontainer/settings.vscode.json new file mode 100644 index 0000000000..3e849cce2c --- /dev/null +++ b/containers/python-3-jupyter-pyspark/.devcontainer/settings.vscode.json @@ -0,0 +1,4 @@ +{ + "python.pythonPath": "/opt/conda/bin/python", + "python.dataScience.jupyterServerURI": "http://localhost:8888?token=1e8a4466-396e-4a1b-bec6-729de2772f29" +} \ No newline at end of file diff --git a/containers/python-3-jupyter-pyspark/.vscode/devContainer.json b/containers/python-3-jupyter-pyspark/.vscode/devContainer.json index aa6897b7b6..2d4d9b2722 100644 --- a/containers/python-3-jupyter-pyspark/.vscode/devContainer.json +++ b/containers/python-3-jupyter-pyspark/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Jupyter PySpark", - "dockerComposeFile": "docker-compose.dev-container.yml", + "dockerComposeFile": "../.devcontainer/docker-compose.yml", "service": "jupyter", "volume": "notebook", "extensions": [ diff --git a/containers/python-3-jupyter-pyspark/.vscode/settings.json b/containers/python-3-jupyter-pyspark/.vscode/settings.json index 5922d3a781..e5c3e74405 100644 --- a/containers/python-3-jupyter-pyspark/.vscode/settings.json +++ b/containers/python-3-jupyter-pyspark/.vscode/settings.json @@ -1,6 +1,5 @@ { - "python.linting.enabled": false, "python.dataScience.notebookFileRoot": "${workspaceFolder}/test-project", - "python.pythonPath": "/opt/conda/bin/python", - "python.dataScience.jupyterServerURI": "http://localhost:8888?token=1e8a4466-396e-4a1b-bec6-729de2772f29" + "python.linting.enabled": true + } \ No newline at end of file diff --git a/containers/python-3-jupyter-pyspark/.vscodeignore b/containers/python-3-jupyter-pyspark/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/python-3-jupyter-pyspark/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/python-3/dev-container.dockerfile b/containers/python-3/.devcontainer/Dockerfile similarity index 100% rename from containers/python-3/dev-container.dockerfile rename to containers/python-3/.devcontainer/Dockerfile diff --git a/containers/python-3/.devcontainer/ignore b/containers/python-3/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/python-3/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/python-3/.vscode/devContainer.json b/containers/python-3/.vscode/devContainer.json index 18b37052db..f022e9b69b 100644 --- a/containers/python-3/.vscode/devContainer.json +++ b/containers/python-3/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Python 3", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "ms-python.python", "LittleFoxTeam.vscode-python-test-adapter" diff --git a/containers/python-3/.vscodeignore b/containers/python-3/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/python-3/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/ruby-2/dev-container.dockerfile b/containers/ruby-2/.devcontainer/Dockerfile similarity index 100% rename from containers/ruby-2/dev-container.dockerfile rename to containers/ruby-2/.devcontainer/Dockerfile diff --git a/containers/ruby-2/.devcontainer/ignore b/containers/ruby-2/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/ruby-2/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/ruby-2/.vscode/devContainer.json b/containers/ruby-2/.vscode/devContainer.json index 319db2a975..5434f2f9ff 100644 --- a/containers/ruby-2/.vscode/devContainer.json +++ b/containers/ruby-2/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Ruby", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "rebornix.Ruby" ] diff --git a/containers/ruby-2/.vscodeignore b/containers/ruby-2/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/ruby-2/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/rust/dev-container.dockerfile b/containers/rust/.devcontainer/Dockerfile similarity index 82% rename from containers/rust/dev-container.dockerfile rename to containers/rust/.devcontainer/Dockerfile index 508e772f1d..93987de8d3 100644 --- a/containers/rust/dev-container.dockerfile +++ b/containers/rust/.devcontainer/Dockerfile @@ -5,6 +5,9 @@ FROM rust:1 +# Copy endpoint specific user setting overrides into container +COPY settings.vscode.json /root/.vscode-remote/data/User/settings.json + RUN rustup update RUN rustup component add rls rust-analysis rust-src diff --git a/containers/rust/.devcontainer/ignore b/containers/rust/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/rust/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/rust/.devcontainer/settings.vscode.json b/containers/rust/.devcontainer/settings.vscode.json new file mode 100644 index 0000000000..746a7be89d --- /dev/null +++ b/containers/rust/.devcontainer/settings.vscode.json @@ -0,0 +1,3 @@ +{ + "lldb.executable": "/usr/bin/lldb-3.9" +} \ No newline at end of file diff --git a/containers/rust/.vscode/devContainer.json b/containers/rust/.vscode/devContainer.json index c3666f9207..f20a29e2f1 100644 --- a/containers/rust/.vscode/devContainer.json +++ b/containers/rust/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "Rust", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "extensions": [ "rust-lang.rust", "bungcip.better-toml", diff --git a/containers/rust/.vscode/settings.json b/containers/rust/.vscode/settings.json index 599665ae8f..80af8eef68 100644 --- a/containers/rust/.vscode/settings.json +++ b/containers/rust/.vscode/settings.json @@ -2,6 +2,5 @@ "search.exclude": { "**/target": true }, - "lldb.executable": "/usr/bin/lldb-3.9", "lldb.verboseLogging": true } \ No newline at end of file diff --git a/containers/rust/.vscodeignore b/containers/rust/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/rust/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/swift-4/dev-container.dockerfile b/containers/swift-4/.devcontainer/Dockerfile similarity index 87% rename from containers/swift-4/dev-container.dockerfile rename to containers/swift-4/.devcontainer/Dockerfile index e68a55ff01..839cae60fe 100644 --- a/containers/swift-4/dev-container.dockerfile +++ b/containers/swift-4/.devcontainer/Dockerfile @@ -5,6 +5,9 @@ FROM swift:4 +# Copy endpoint specific user setting overrides into container +COPY settings.vscode.json /root/.vscode-remote/data/User/settings.json + # Install git RUN apt-get update && apt-get -y install git diff --git a/containers/swift-4/.devcontainer/ignore b/containers/swift-4/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/swift-4/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/swift-4/.vscode/settings.json b/containers/swift-4/.devcontainer/settings.vscode.json similarity index 100% rename from containers/swift-4/.vscode/settings.json rename to containers/swift-4/.devcontainer/settings.vscode.json diff --git a/containers/swift-4/.vscodeignore b/containers/swift-4/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/swift-4/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/containers/typescript-node-8/dev-container.dockerfile b/containers/typescript-node-8/.devcontainer/Dockerfile similarity index 100% rename from containers/typescript-node-8/dev-container.dockerfile rename to containers/typescript-node-8/.devcontainer/Dockerfile diff --git a/containers/typescript-node-8/.devcontainer/ignore b/containers/typescript-node-8/.devcontainer/ignore new file mode 100644 index 0000000000..7f19386cd9 --- /dev/null +++ b/containers/typescript-node-8/.devcontainer/ignore @@ -0,0 +1,6 @@ +../README.md +../test-project +../.vscode/launch.json +../.vscode/launch.test.json +../.vscode/settings.json +../.vscode/tasks.json diff --git a/containers/typescript-node-8/.vscode/devContainer.json b/containers/typescript-node-8/.vscode/devContainer.json index 672c3a67f7..11fc551381 100644 --- a/containers/typescript-node-8/.vscode/devContainer.json +++ b/containers/typescript-node-8/.vscode/devContainer.json @@ -1,6 +1,6 @@ { "name": "TypeScript", - "dockerFile": "dev-container.dockerfile", + "dockerFile": "../.devcontainer/Dockerfile", "appPort": 3000, "extensions": [ "ms-vscode.vscode-typescript-tslint-plugin" diff --git a/containers/typescript-node-8/.vscode/settings.json b/containers/typescript-node-8/.vscode/settings.json deleted file mode 100644 index 0cce3720e6..0000000000 --- a/containers/typescript-node-8/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "_workbench.uiExtensions": ["-ms-vscode.vscode-typescript-tslint-plugin"] -} \ No newline at end of file diff --git a/containers/typescript-node-8/.vscodeignore b/containers/typescript-node-8/.vscodeignore deleted file mode 100644 index bab398d98f..0000000000 --- a/containers/typescript-node-8/.vscodeignore +++ /dev/null @@ -1,6 +0,0 @@ -README.md -test-project -.vscode/launch.json -.vscode/launch.test.json -.vscode/settings.json -.vscode/tasks.json diff --git a/utility/.npmignore b/utility/.npmignore new file mode 100644 index 0000000000..789972f29d --- /dev/null +++ b/utility/.npmignore @@ -0,0 +1,12 @@ +*.log +.vscode +.vscode-test +out/test +src +.gitignore +.npmignore +tsconfig.json +tslint.json +vscode.d.ts +**/*.map +*.tgz \ No newline at end of file diff --git a/utility/package.json b/utility/package.json new file mode 100644 index 0000000000..e67da0d7cc --- /dev/null +++ b/utility/package.json @@ -0,0 +1,25 @@ +{ + "name": "vscdevcon", + "displayName": "VS Code Dev Containers", + "description": "A utility to add VS Code Dev Container definitions to a local folder.", + "repository": "https://github.com/Microsoft/vscode-dev-containers", + "version": "0.0.1", + "scripts": { + "compile": "./node_modules/.bin/tsc -p ./", + "watch": "./node_modules/.bin/tsc -watch -p ./", + "prepack": "yarn run compile" + }, + "main": "./out/devcon.js", + "types": "./vscdevcon.ts", + "devDependencies": { + "@types/glob": "^7.1.1", + "@types/node": "^10.12.21", + "@types/yargs": "^12.0.10", + "tslint": "^5.12.1", + "typescript": "^3.3.1" + }, + "dependencies": { + "glob": "^7.1.3", + "yargs": "^13.2.2" + } +} diff --git a/utility/src/devcon.ts b/utility/src/devcon.ts new file mode 100644 index 0000000000..892a7a8500 --- /dev/null +++ b/utility/src/devcon.ts @@ -0,0 +1,88 @@ +import * as yargs from 'yargs'; +import * as glob from 'glob'; +import * as https from 'https'; + +const DEV_CONTAINERS_REPO = 'Microsoft/vscode-dev-containers'; +const DEFINITIONS_PATH = 'containers'; + +yargs.command('add ', + 'Add files from the container definition to a local folder', + (yargs: any) => { + return yargs.positional('definitionId', { + describe: 'Dev Container Definition ID', + requiresArg: true, + type: 'string' + }) + .option('output', { + alias: 'o', + describe: 'Folder to output container definition files.', + default: process.cwd(), + type: 'string' + }); + }, (argv: any)=> { + add(argv.definitionId, argv.output); + }) + .help(); + +async function list(devContainersRepo: string = DEV_CONTAINERS_REPO, definitionsPath: string = DEFINITIONS_PATH) { + + try { + const ghResponse = await getContent('', devContainersRepo, definitionsPath); + if(!Array.isArray(ghResponse)) { + console.error('Failed to get ist of dev container definitions! Response object is not an Array.'); + process.exit(1); + } + console.log('Current available dev container definitions: \n\n'); + ghResponse.forEach((folder: any)=> { + if(!folder.name) { + console.error('Failed to get ist of dev container definitions! Object has no name property.'); + process.exit(1); + } + console.log(folder.name); + }); + } catch (err) { + console.error('Failed to get ist of dev container definitions! ' + err); + } +} + +async function add(definitionId: string, outputFolder: string = process.cwd(), devContainersRepo: string = DEV_CONTAINERS_REPO, definitionsPath: string = DEFINITIONS_PATH) { + try { + const definitionContents = await getContent(definitionId, devContainersRepo, definitionsPath); + if(!Array.isArray(definitionContents)) { + if(definitionContents.message === 'Not Found') { + console.error(`Dev container definition ${definitionId} not found.`); + } else { + console.error(`Failed to get dev container definition ${definitionId}! Response object is not an Array.`); + } + process.exit(1); + } + + // see if .vscodeignore is present, parse it if so, filter out contents, then download each file and place them in outputFolder + + } catch (err) { + console.error('Failed to get ist of dev container definitions! ' + err); + } +} + +async function getContent(path: string = '', devContainersRepo: string = DEV_CONTAINERS_REPO, definitionsPath: string = DEFINITIONS_PATH): Promise { + const contentPath = definitionsPath + (path !== '' ? '/' + path : ''); + return new Promise((resolve, reject) => { + https.get(`https://api.github.com/repos/${devContainersRepo}/contents/${contentPath}`, (res)=> { + let ghResponseString = ''; + res.on('data', (data) => ghResponseString += data); + res.on('end', (aborted: boolean) => { + if (aborted) { + reject(`Failed to get content from ${contentPath} in ${devContainersRepo}.`); + return; + } + try { + resolve(JSON.parse(ghResponseString)); + } catch (err) { + reject(`Failed to parse GitHub response. ` + err); + } + }); + }).on('error', (err) => { + reject('Failed to get ist of dev container definitions! ' + err); + }); + }); +} \ No newline at end of file diff --git a/utility/tsconfig.json b/utility/tsconfig.json new file mode 100644 index 0000000000..8a3ebb8dcb --- /dev/null +++ b/utility/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "outDir": "out", + "lib": [ + "es6" + ], + "esModuleInterop": true, + "sourceMap": true, + "rootDir": "src", + "strict": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + }, + "exclude": [ + "node_modules", + ".vscode-test" + ] +} diff --git a/utility/tslint.json b/utility/tslint.json new file mode 100644 index 0000000000..c81ff28fca --- /dev/null +++ b/utility/tslint.json @@ -0,0 +1,15 @@ +{ + "rules": { + "no-string-throw": true, + "no-unused-expression": true, + "no-duplicate-variable": true, + "curly": true, + "class-name": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": true + }, + "defaultSeverity": "warning" +} diff --git a/utility/yarn.lock b/utility/yarn.lock new file mode 100644 index 0000000000..ea27117723 --- /dev/null +++ b/utility/yarn.lock @@ -0,0 +1,675 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "11.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.7.tgz#f1c35a906b82adae76ede5ab0d2088e58fa37843" + integrity sha512-bHbRcyD6XpXVLg42QYaQCjvDXaCFkvb3WbCIxSDmhGbJYVroxvYzekk9QGg1beeIawfvSLkdZpP0h7jxE4ihnA== + +"@types/node@^10.12.21": + version "10.14.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.4.tgz#1c586b991457cbb58fef51bc4e0cfcfa347714b5" + integrity sha512-DT25xX/YgyPKiHFOpNuANIQIVvYEwCWXgK2jYYwqgaMrYE6+tq+DtmMwlD3drl6DJbUwtlIDnn0d7tIn/EbXBg== + +"@types/yargs@^12.0.10": + version "12.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.10.tgz#17a8ec65cd8e88f51b418ceb271af18d3137df67" + integrity sha512-WsVzTPshvCSbHThUduGGxbmnwcpkgSctHGHTqzWyFg4lYAuV5qXlyFPOsP3OWqCINfmg/8VXP+zJaa4OxEsBQQ== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= + +camelcase@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.2.0.tgz#e7522abda5ed94cc0489e1b8466610e88404cf45" + integrity sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ== + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +commander@^2.12.1: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +diff@^3.2.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +glob@^7.1.1, glob@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.7.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.0.tgz#38ee7178ac0eea2c97ff6d96fff4b18c7d8cf98e" + integrity sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +mem@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.2.0.tgz#5ee057680ed9cb8dad8a78d820f9a8897a102025" + integrity sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +mimic-fn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.0.0.tgz#0913ff0b121db44ef5848242c38bbb35d44cabde" + integrity sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.1.0.tgz#c1a0f1030e97de018bb2c718929d2af59463e505" + integrity sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA== + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve@^1.3.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + +semver@^5.3.0, semver@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" + integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +tslib@^1.8.0, tslib@^1.8.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" + integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslint@^5.12.1: + version "5.14.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.14.0.tgz#be62637135ac244fc9b37ed6ea5252c9eba1616e" + integrity sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ== + dependencies: + babel-code-frame "^6.22.0" + builtin-modules "^1.1.1" + chalk "^2.3.0" + commander "^2.12.1" + diff "^3.2.0" + glob "^7.1.1" + js-yaml "^3.7.0" + minimatch "^3.0.4" + mkdirp "^0.5.1" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.29.0" + +tsutils@^2.29.0: + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== + dependencies: + tslib "^1.8.1" + +typescript@^3.3.1: + version "3.3.4000" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0" + integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yargs-parser@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" + integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.2.2: + version "13.2.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" + integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== + dependencies: + cliui "^4.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.0.0"