From a0286149e22768c4dab2f3815d1e88d4b7f835ed Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Thu, 25 May 2023 11:07:58 +1000 Subject: [PATCH] Updated VS Code (markdown) --- VS-Code.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/VS-Code.md b/VS-Code.md index 5079342..c830ddc 100644 --- a/VS-Code.md +++ b/VS-Code.md @@ -59,4 +59,74 @@ Here's a copy of my `.vscode/settings.json` files: ``` # devcontainer -VS Code [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) feature allows your coding environment to be hosted inside a docker container, providing all the tools and consistent environment of that docker container, without needing to install everything onto your computer manually. \ No newline at end of file +VS Code [devcontainer](https://code.visualstudio.com/docs/devcontainers/containers) feature allows your coding environment to be hosted inside a docker container, providing all the tools and consistent environment of that docker container, without needing to install everything onto your computer manually. + +This can be set up quickly by adding a `.devcontainer.json` file to the root folder of your project, after which VS Code will ask in a popup if you want to re-open your project in the container. +Here's an example `.devcontainer.json` micropython project file you could base yours on: +``` json +{ + "name": "Micropython Project", + "image": "micropython/unix:latest", + "containerEnv": { + "DEVCONTAINER": "1" + }, + "runArgs": [ + "-e", + "GIT_EDITOR=code --wait", + // Docker will clean up the container and remove the file system when + // the system exits + "--rm", + // -e will set environment variables + // SSH_AUTH_SOCK is used to specify the ssh permission files + "-eSSH_AUTH_SOCK=/run/user/1000/keyring/ssh", + // Specify the work directory as the local workspace folder + "-w${localWorkspaceFolder}", + // Tell docker to use the same user as the host is using. Value should + // match output of the command "id -u". + "--user=1000:1000", + "-eHOME=/home", + // Use the same display, and network ports, as the host. (This allows + // graphical applications, such as JFlashLite, to be launched in the + // container environment) + "--env=\"DISPLAY\"", + "--hostname=Micropython", + "--add-host=Micropython:127.0.0.1", + "--net=host", + // By default, docker does not allow access to the host computer's + // devices. This option adds permission for docker to access the host + // computer's decices, allowing utilities like JFlashLite to work + // properly + "--privileged" + ], + "customizations": { + "vscode": { + "extensions": [ + // Python development + "ms-python.python", + "ms-python.vscode-pylance", + // Extensions recommended by vscode for C++ development + "ms-vscode.cpptools-extension-pack", + "ms-vscode.makefile-tools", + // Allows user to debug ST devices, using the settings recommended in: + // https://gitlab.pi.planetinnovation.com.au/lonsdale/firmware/code-editor-settings + "marus25.cortex-debug", + // Other helpful extensions + "visualstudioexptteam.vscodeintellicode", + "redhat.vscode-yaml", + "esbenp.prettier-vscode", + ] + } + }, + "updateRemoteUserUID": true, + "mounts": [ + // Map user ssh settings & auth to container for git use. + "source=${localEnv:HOME}/.ssh,target=${localEnv:HOME}/.ssh,type=bind,consistency=cached", + // Provide USB access to container + "type=bind,source=/dev/bus/usb,target=/dev/bus/usb", + // Provide docker-in-docker support + "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock" + ] +} +``` + +The image used could be swapped from `micropython/unix:latest` to `espressif/idf:release-v4.4` if you want to compile for esp32, or one with arm-none-eabi-gcc like `registry.gitlab.com/alelec/docker-arm-none-eabi:latest` for building arm ports like stm32 or mimxrt. \ No newline at end of file