From 7979b329e349e31d328b80b7eae436695c7f6a53 Mon Sep 17 00:00:00 2001 From: Chris Green Date: Tue, 28 Oct 2025 18:26:49 -0500 Subject: [PATCH] VSCode dev container setup and workspace config --- .devcontainer/devcontainer.json | 73 ++++++++++++++++++++ phlex.code-workspace | 114 ++++++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 phlex.code-workspace diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..d017d1bc --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,73 @@ +{ + "name": "Phlex CI Dev Container", + "image": "ghcr.io/framework-r-d/phlex-dev:latest", + "workspaceFolder": "/workspaces/phlex", + "containerEnv": { + "GH_CONFIG_DIR": "/home/vscode/.config/gh" + }, + "mounts": [ + "source=${env:XDG_RUNTIME_DIR}/podman/podman.sock,target=/var/run/docker.sock,type=bind", + "source=${env:HOME}/.config/gh,target=/home/vscode/.config/gh,type=bind,readonly" + ], + "customizations": { + "vscode": { + "settings": { + "cmake.generator": "Ninja", + "C_Cpp.default.cStandard": "c17", + "C_Cpp.default.cppStandard": "c++20", + "C_Cpp.default.intelliSenseMode": "linux-gcc-x64", + "C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json", + "python.languageServer": "Pylance", + "python.analysis.typeCheckingMode": "basic", + "python.analysis.diagnosticMode": "workspace" + }, + "extensions": [ + "charliermarsh.ruff", + "cheshirekow.cmake-format", + "chrisjsewell.myst-tml-syntax", + "codecov.codecov", + "codeium.codeium", + "codeium.windsurf-cpptools", + "codeium.windsurfpyright", + "davidanson.vscode-markdownlint", + "donjayamanne.githistory", + "dotjoshjohnson.xml", + "eamodio.gitlens", + "github.copilot", + "github.copilot-chat", + "github.vscode-github-actions", + "github.vscode-pull-request-github", + "jebbs.plantuml", + "lextudio.iis", + "lextudio.restructuredtext", + "lextudio.restructuredtext-pack", + "lfs.vscode-emacs-friendly", + "links-req-tracer.links-requirement-tracer", + "llvm-vs-code-extensions.vscode-clangd", + "ms-python.debugpy", + "ms-python.mypy-type-checker", + "ms-python.pylint", + "ms-python.python", + "ms-python.vscode-pylance", + "ms-python.vscode-python-envs", + "ms-vscode.cmake-tools", + "ms-vscode.cpptools", + "ms-vscode.cpptools-extension-pack", + "ms-vscode.cpptools-themes", + "ms-vscode.hexeditor", + "ms-vscode.live-server", + "ms-vscode.makefile-tools", + "ms-vscode.vscode-websearchforcopilot", + "redhat.vscode-yaml", + "saoudrizwan.claude-dev", + "shd101wyy.markdown-preview-enhanced", + "swyddfa.esbonio", + "trond-snekvik.simple-rst", + "twxs.cmake", + "vadimcn.vscode-lldb", + "wequick.coverage-gutters", + "xaver.clang-format" + ] + } + } +} diff --git a/phlex.code-workspace b/phlex.code-workspace new file mode 100644 index 00000000..3467f171 --- /dev/null +++ b/phlex.code-workspace @@ -0,0 +1,114 @@ +{ + "folders": [ + { + "name": "Phlex", + "path": "." + } + ], + "settings": { + "files.associations": { + "*.yml": "yaml", + "*.yaml": "yaml", + "codecov.yml": "plaintext" + }, + "files.exclude": { + "**/local/.*/**": true, + "**/local/*/": true + }, + "search.exclude": { + "**/local/.*/**": true, + "**/local/*/": true, + "**/build/_deps/**": true, + "**/build/CMakeFiles/**": true + }, + "files.watcherExclude": { + "**/local/.*/**": true, + "**/local/*/": true, + "**/build/_deps/**": true, + "**/build/CMakeFiles/**": true + }, + "cmake.sourceDirectory": "${workspaceFolder}", + "cmake.buildDirectory": "${workspaceFolder}/build", + "cmake.useCMakePresets": "always", + "cmake.generator": "Ninja", + "C_Cpp.default.cStandard": "c17", + "C_Cpp.default.cppStandard": "c++23", + "C_Cpp.default.intelliSenseMode": "linux-gcc-x64", + "C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json", + "C_Cpp.exclusionPolicy": "checkFolders", + "C_Cpp.files.exclude": { + "**/local/.*/**": true, + "**/local/*/": true, + "**/build/_deps/**": true, + "**/build/CMakeFiles/**": true + }, + "terminal.integrated.defaultProfile.linux": "bash", + "terminal.integrated.profiles.linux": { + "bash": { + "path": "/bin/bash", + "args": [], + "env": { + "BASH_ENV": "/entrypoint.sh" + } + } + }, + "python.languageServer": "Pylance", + "python.analysis.typeCheckingMode": "basic", + "python.analysis.diagnosticMode": "workspace", + "python.analysis.exclude": [ + "**/local/.*/**", + "**/local/*/", + "**/build/_deps/**", + "**/build/CMakeFiles/**" + ], + "python.analysis.ignore": [ + "**/local/.*/**", + "**/local/*/", + "**/build/_deps/**", + "**/build/CMakeFiles/**" + ], + "flake8.enabled": false, + "[python]": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.codeActionsOnSave": { + "source.organizeImports.ruff": "explicit", + "source.fixAll.ruff": "explicit" + } + }, + "yaml.schemas": { + "https://json.schemastore.org/github-workflow.json": "./.github/workflows/*" + } + }, + "extensions": { + "recommendations": [ + "ms-vscode.cmake-tools", + "ms-vscode.cpptools", + "ms-vscode.cpptools-extension-pack", + "twxs.cmake", + "ms-vscode.vscode-json", + "redhat.vscode-yaml", + "charliermarsh.ruff", + "github.vscode-actions", + "github.copilot", + "github.copilot-chat", + "github.vscode-pull-request-github", + "ms-vscode.hexeditor" + ], + "unwantedRecommendations": [ + "reditorsupport.r", + "ms-vscode.r", + "ikuyadeu.r", + "ms-vscode.r-debugger", + "vscjava.vscode-java-pack", + "redhat.java", + "vscjava.vscode-java-debug", + "vscjava.vscode-java-test", + "vscjava.vscode-maven", + "vscjava.vscode-gradle", + "ms-python.python", + "ms-toolsai.jupyter", + "ms-python.flake8" + ] + } +}