diff --git a/.devcontainer.json b/.devcontainer.json index b215d4c5..1a368a0a 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -1,13 +1,24 @@ { + "image": "mcr.microsoft.com/devcontainers/base:ubuntu-22.04", "customizations": { "vscode": { "extensions": [ + // general "visualstudioexptteam.vscodeintellicode", "github.vscode-pull-request-github", "redhat.vscode-yaml", "davidanson.vscode-markdownlint", "bierner.markdown-mermaid", "streetsidesoftware.code-spell-checker", + "tamasfe.even-better-toml", + "github.vscode-github-actions", + "codecov.codecov", + "ritwickdey.liveserver", + "eamodio.gitlens", + // javascript + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + // python "ms-python.python", "ms-python.debugpy", "ms-python.pylint", @@ -15,28 +26,29 @@ "ms-python.vscode-pylance", "ms-python.mypy-type-checker", "ms-python.black-formatter", - "njpwerner.autodocstring", - "tamasfe.even-better-toml", + "qwtel.sqlite-viewer", + "njpwerner.autodocstring" ] } }, - "dockerComposeFile": [ - "./docker-compose.yml" - ], "features": { - "ghcr.io/devcontainers-contrib/features/pipenv:2": { - "version": "2023.11.15" + "ghcr.io/devcontainers/features/github-cli:1": { + "version": "2.52.0" + }, + "ghcr.io/devcontainers/features/node:1": { + "version": "18" }, "ghcr.io/devcontainers/features/python:1": { "installTools": false, - "version": "3.12" + "version": "3.8" }, - "ghcr.io/devcontainers/features/github-cli:1": {} + "ghcr.io/devcontainers-contrib/features/pipenv:2": { + "version": "2023.11.15" + } }, "name": "workspace", - "postCreateCommand": "sudo chmod u+x .submodules/recurse-fork/run && .submodules/recurse-fork/run", + "postCreateCommand": "sudo chmod u+x .submodules/setup/run && .submodules/setup/run", "remoteUser": "root", - "service": "base-service", "shutdownAction": "none", "workspaceFolder": "/workspace" } \ No newline at end of file diff --git a/.submodules/config/Pipfile b/.submodules/config/Pipfile index a2e39c75..36c885d0 100644 --- a/.submodules/config/Pipfile +++ b/.submodules/config/Pipfile @@ -12,4 +12,4 @@ mypy = "==1.6.1" pylint = "==3.0.2" [requires] -python_version = "3.12" +python_version = "3.8" diff --git a/.submodules/config/Pipfile.lock b/.submodules/config/Pipfile.lock index cfe339bc..6f0d022a 100644 --- a/.submodules/config/Pipfile.lock +++ b/.submodules/config/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "e57add4ced02ace205ac94eaac37246ca24adda51c34fec033fcb8590cf7430d" + "sha256": "bc221c3a0b0626a44da80f9d312e0c38191785670db67571484523a040633606" }, "pipfile-spec": 6, "requires": { - "python_version": "3.12" + "python_version": "3.8" }, "sources": [ { @@ -78,9 +78,17 @@ "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7" ], - "markers": "python_version >= '3.11'", + "markers": "python_version < '3.11'", "version": "==0.3.8" }, + "exceptiongroup": { + "hashes": [ + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" + ], + "markers": "python_version < '3.11'", + "version": "==1.2.1" + }, "iniconfig": { "hashes": [ "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", @@ -149,11 +157,11 @@ }, "packaging": { "hashes": [ - "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", - "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" + "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", + "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" ], - "markers": "python_version >= '3.7'", - "version": "==24.0" + "markers": "python_version >= '3.8'", + "version": "==24.1" }, "pathspec": { "hashes": [ @@ -165,11 +173,11 @@ }, "platformdirs": { "hashes": [ - "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf", - "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1" + "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", + "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" ], "markers": "python_version >= '3.8'", - "version": "==4.2.1" + "version": "==4.2.2" }, "pluggy": { "hashes": [ @@ -197,21 +205,29 @@ "markers": "python_version >= '3.7'", "version": "==7.2.1" }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" + }, "tomlkit": { "hashes": [ - "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f", - "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c" + "sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72", + "sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264" ], - "markers": "python_version >= '3.7'", - "version": "==0.12.5" + "markers": "python_version >= '3.8'", + "version": "==0.13.0" }, "typing-extensions": { "hashes": [ - "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", - "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" + "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", + "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" ], "markers": "python_version >= '3.8'", - "version": "==4.11.0" + "version": "==4.12.2" } } } diff --git a/.submodules/config/configs.jsonc b/.submodules/config/configs.jsonc index 489346ab..01845636 100644 --- a/.submodules/config/configs.jsonc +++ b/.submodules/config/configs.jsonc @@ -10,36 +10,11 @@ // - "/* multi-line comment, no preceding text */" 🚫 // - "{"age": 27} /* multi-line comment, some preceding text */" 🚫 // -// These configs are processed by .submodules/__main__.py. To understand more -// about the shape of this data, please read .submodules/configs.py. +// These configs are processed by .submodules/config/__main__.py. To understand +// more about the shape of this data, please read .submodules/config/configs.py. { "base": { "description": "Base configuration to be inherited by all other configurations.", - "devcontainer": { - "dockerComposeFile": [ - "../docker-compose.yml" - ], - "service": "base-service", - "shutdownAction": "none", - "remoteUser": "root", - "customizations": { - "vscode": { - "extensions": [ - "visualstudioexptteam.vscodeintellicode", - "github.vscode-pull-request-github", - "redhat.vscode-yaml", - "davidanson.vscode-markdownlint", - "bierner.markdown-mermaid", - "streetsidesoftware.code-spell-checker", - "tamasfe.even-better-toml", - "github.vscode-github-actions", - "codecov.codecov", - "ritwickdey.liveserver", - "eamodio.gitlens" - ] - } - } - }, "vscode": { "settings": { "editor.tabSize": 2, @@ -61,46 +36,16 @@ "pipenv" ] } - }, - "workspace": { - "folders": [ - { - "path": "." - } - ], - "settings": { - "workbench.colorCustomizations": { - "editorRuler.foreground": "#008000" - } - } } }, - "javascript.devcontainer": { - "inherits": [ - "base" - ], - "description": "A devcontainer with a javascript environment.", - "devcontainer": { - "features": { - "ghcr.io/devcontainers/features/node:1": { - "version": "18" - } - }, - "customizations": { - "vscode": { - "extensions": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode" - ] - } - } - } - }, - "javascript.config": { + "javascript": { "inherits": [ "base" ], "description": "A configured javascript environment.", + "submodules": [ + "codeforlife-package-javascript" + ], "vscode": { "settings": { "javascript.format.semicolons": "remove", @@ -109,72 +54,20 @@ "typescript.preferences.quoteStyle": "double", "!prettier.configPath": ".prettierrc.json", "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "codeSnippets": { - "javascript.module.doccomment": { - "prefix": [ - "/" - ], - "scope": "javascript,typescript,javascriptreact,typescriptreact", - "body": [ - "/**", - " * © Ocado Group", - " * Created on $CURRENT_DATE/$CURRENT_MONTH/$CURRENT_YEAR at $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND($CURRENT_TIMEZONE_OFFSET).", - " *", - " * ${1:__description__}", - " */" - ] - } - } - } - }, - "javascript": { - "inherits": [ - "javascript.devcontainer", - "javascript.config" - ], - "description": "A devcontainer with a configured javascript environment.", - "submodules": [ - "codeforlife-package-javascript" - ] - }, - "python.devcontainer": { - "inherits": [ - "base" - ], - "description": "A devcontainer with a python environment.", - "devcontainer": { - "features": { - "ghcr.io/devcontainers/features/python:1": { - "version": "3.8", - "installTools": false - }, - "ghcr.io/devcontainers-contrib/features/pipenv:2": { - "version": "2023.11.15" - } - }, - "customizations": { - "vscode": { - "extensions": [ - "ms-python.python", - "ms-python.debugpy", - "ms-python.pylint", - "ms-python.isort", - "ms-python.vscode-pylance", - "ms-python.mypy-type-checker", - "ms-python.black-formatter", - "qwtel.sqlite-viewer", - "njpwerner.autodocstring" - ] - } } } }, - "python.config": { + "python": { "inherits": [ "base" ], "description": "A configured python environment.", + "submodules": [ + "codeforlife-deploy-appengine", + "codeforlife-package-python", + "codeforlife-portal", + "rapid-router" + ], "vscode": { "settings": { "python.defaultInterpreterPath": ".venv/bin/python", @@ -255,97 +148,36 @@ } } ] - }, - "codeSnippets": { - "python.module.docstring": { - "prefix": [ - "\"\"\"", - "'''" - ], - "scope": "python", - "body": [ - "\"\"\"", - "© Ocado Group", - "Created on $CURRENT_DATE/$CURRENT_MONTH/$CURRENT_YEAR at $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND($CURRENT_TIMEZONE_OFFSET).", - "", - "${1:__description__}", - "\"\"\"" - ] - }, - "python.pylint.disable-next": { - "prefix": [ - "# pylint" - ], - "scope": "python", - "body": [ - "# pylint: disable-next=${1:__code_name__}" - ] - }, - "python.mypy.ignore": { - "prefix": [ - "# type" - ], - "scope": "python", - "body": [ - "# type: ignore[${1:__code_name__}]" - ] - } - } - }, - "workspace": { - "folders": [], - "settings": { - "autoDocstring.customTemplatePath": ".vscode/extensions/autoDocstring/docstring.mustache" } } }, - "python": { - "inherits": [ - "python.devcontainer", - "python.config" - ], - "description": "A devcontainer with a configured python environment.", - "submodules": [ - "codeforlife-deploy-appengine", - "codeforlife-package-python", - "codeforlife-portal", - "rapid-router" - ] - }, - "service.devcontainer": { + "service": { "inherits": [ - "python.devcontainer", - "javascript.devcontainer" + "base" ], - "description": "The devcontainer for a micro-service.", - "devcontainer": { - "postCreateCommand": "sudo chmod u+x scripts/setup && scripts/setup", - "mounts": [ - "source=./codeforlife-package-javascript,target=/workspace/codeforlife-package-javascript,type=bind,consistency=cached", - "source=./codeforlife-package-python,target=/workspace/codeforlife-package-python,type=bind,consistency=cached" - ] - }, - "workspace": { - "folders": [ - { - "path": "../codeforlife-package-python", - "name": "package-python" - }, - { - "path": "../codeforlife-package-javascript", - "name": "package-javascript" - } - ] - }, + "description": "A micro-service.", "vscode": { "tasks": { "version": "2.0.0", "tasks": [ + { + "label": "setup", + "type": "shell", + "command": "sudo chmod u+x scripts/setup && scripts/setup", + "problemMatcher": [] + }, { "label": "hard-install", "type": "shell", "command": "sudo chmod u+x scripts/hard-install && scripts/hard-install", "problemMatcher": [] + }, + { + "label": "run", + "isBackground": true, + "command": "sudo chmod u+x scripts/run && scripts/run", + "type": "shell", + "problemMatcher": [] } ] } @@ -353,10 +185,10 @@ }, "service.backend": { "inherits": [ - "service.devcontainer", - "python.config" + "service", + "python" ], - "description": "A devcontainer for a backend micro-service.", + "description": "A micro-service's backend.", "submodules": [ "codeforlife-template-backend", "codeforlife-portal-backend" @@ -374,16 +206,6 @@ "api" ] }, - "tasks": { - "tasks": [ - { - "label": "setup", - "type": "shell", - "command": "sudo chmod u+x scripts/setup && scripts/setup", - "problemMatcher": [] - } - ] - }, "launch": { "version": "0.2.0", "configurations": [ @@ -409,10 +231,10 @@ }, "service.frontend": { "inherits": [ - "service.devcontainer", - "javascript.config" + "service", + "javascript" ], - "description": "A devcontainer for a frontend micro-service.", + "description": "A micro-service's frontend.", "submodules": [ "codeforlife-portal-frontend" ], @@ -420,16 +242,12 @@ "tasks": { "tasks": [ { - "label": "start-vite-server", - "isBackground": true, - "command": "sudo chmod u+x scripts/run && scripts/run", - "type": "shell", + "label": "run", "options": { "env": { "BROWSER": "none" } - }, - "problemMatcher": [] + } } ] }, @@ -441,73 +259,10 @@ "type": "chrome", "request": "launch", "url": "http://localhost:5173", - "preLaunchTask": "start-vite-server" - } - ] - } - } - }, - "service+sso": { - "inherits": [ - "service.devcontainer" - ], - "description": "A service that also runs the SSO service in the background.", - // TODO: set submodules after testing how this would work. - "submodules": [], - "devcontainer": { - "mounts": [ - "source=./codeforlife-sso,target=/workspace/codeforlife-sso,type=bind,consistency=cached" - ] - }, - "vscode": { - "tasks": { - "version": "2.0.0", - "tasks": [ - { - "label": "run-sso-server", - "type": "shell", - "isBackground": true, - "options": { - "cwd": "${workspaceFolder}/../codeforlife-sso", - "env": { - "DB_NAME": "${fileWorkspaceFolder}/db.sqlite3", - "SERVICE_NAME": "sso", - "SERVICE_PORT": "8001" - } - }, - "dependsOn": [ - "migrate-db" - ], - "command": "pipenv run python ./manage.py runserver localhost:8001" - } - ] - }, - "launch": { - "version": "0.2.0", - "configurations": [ - { - "name": "Django Server", - "type": "python", - "request": "launch", - "django": true, - "justMyCode": false, - "program": "${fileWorkspaceFolder}/manage.py", - "args": [ - "runserver", - "localhost:8000" - ], - "preLaunchTask": "run-sso-server" + "preLaunchTask": "run" } ] } - }, - "workspace": { - "folders": [ - { - "path": "../codeforlife-sso", - "name": "sso" - } - ] } } } \ No newline at end of file diff --git a/.submodules/recurse-fork/.venv/.gitkeep b/.submodules/setup/.venv/.gitkeep similarity index 100% rename from .submodules/recurse-fork/.venv/.gitkeep rename to .submodules/setup/.venv/.gitkeep diff --git a/.submodules/recurse-fork/Pipfile b/.submodules/setup/Pipfile similarity index 91% rename from .submodules/recurse-fork/Pipfile rename to .submodules/setup/Pipfile index 5df63db4..e3be2be7 100644 --- a/.submodules/recurse-fork/Pipfile +++ b/.submodules/setup/Pipfile @@ -14,4 +14,4 @@ pylint = "==3.0.2" types-colorama = "==0.4.15.20240311" [requires] -python_version = "3.12" +python_version = "3.8" diff --git a/.submodules/recurse-fork/Pipfile.lock b/.submodules/setup/Pipfile.lock similarity index 85% rename from .submodules/recurse-fork/Pipfile.lock rename to .submodules/setup/Pipfile.lock index b6bf73c1..fc3ff40a 100644 --- a/.submodules/recurse-fork/Pipfile.lock +++ b/.submodules/setup/Pipfile.lock @@ -1,11 +1,11 @@ { "_meta": { "hash": { - "sha256": "c59a59e06573ae48b08029650e13db031d81fd237ff6c32d93bf44dbf070abc0" + "sha256": "c05ab3e537ef81af64532d2cffebf0654887ad8f048f7badca8865d51eab115f" }, "pipfile-spec": 6, "requires": { - "python_version": "3.12" + "python_version": "3.8" }, "sources": [ { @@ -88,9 +88,17 @@ "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca", "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7" ], - "markers": "python_version >= '3.11'", + "markers": "python_version < '3.11'", "version": "==0.3.8" }, + "exceptiongroup": { + "hashes": [ + "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad", + "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16" + ], + "markers": "python_version < '3.11'", + "version": "==1.2.1" + }, "iniconfig": { "hashes": [ "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", @@ -159,11 +167,11 @@ }, "packaging": { "hashes": [ - "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5", - "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9" + "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", + "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124" ], - "markers": "python_version >= '3.7'", - "version": "==24.0" + "markers": "python_version >= '3.8'", + "version": "==24.1" }, "pathspec": { "hashes": [ @@ -175,11 +183,11 @@ }, "platformdirs": { "hashes": [ - "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf", - "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1" + "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee", + "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3" ], "markers": "python_version >= '3.8'", - "version": "==4.2.1" + "version": "==4.2.2" }, "pluggy": { "hashes": [ @@ -207,13 +215,21 @@ "markers": "python_version >= '3.7'", "version": "==7.2.1" }, + "tomli": { + "hashes": [ + "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", + "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f" + ], + "markers": "python_version < '3.11'", + "version": "==2.0.1" + }, "tomlkit": { "hashes": [ - "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f", - "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c" + "sha256:08ad192699734149f5b97b45f1f18dad7eb1b6d16bc72ad0c2335772650d7b72", + "sha256:7075d3042d03b80f603482d69bf0c8f345c2b30e41699fd8883227f89972b264" ], - "markers": "python_version >= '3.7'", - "version": "==0.12.5" + "markers": "python_version >= '3.8'", + "version": "==0.13.0" }, "types-colorama": { "hashes": [ @@ -226,11 +242,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0", - "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a" + "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", + "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8" ], "markers": "python_version >= '3.8'", - "version": "==4.11.0" + "version": "==4.12.2" } } } diff --git a/.submodules/recurse-fork/__main__.py b/.submodules/setup/__main__.py similarity index 100% rename from .submodules/recurse-fork/__main__.py rename to .submodules/setup/__main__.py diff --git a/.submodules/recurse-fork/run b/.submodules/setup/run similarity index 100% rename from .submodules/recurse-fork/run rename to .submodules/setup/run diff --git a/.vscode/codeforlife.code-snippets b/.vscode/codeforlife.code-snippets index c54a2b16..d80de454 100644 --- a/.vscode/codeforlife.code-snippets +++ b/.vscode/codeforlife.code-snippets @@ -31,5 +31,37 @@ "# pylint" ], "scope": "python" + }, + "python.pylint.disable": { + "body": [ + "# pylint: disable=${1:__code_name__}" + ], + "prefix": [ + "# pylint" + ], + "scope": "python" + }, + "python.pylint.enable": { + "body": [ + "# pylint: enable=${1:__code_name__}" + ], + "prefix": [ + "# pylint" + ], + "scope": "python" + }, + "javascript.module.doccomment": { + "body": [ + "/**", + " * \u00a9 Ocado Group", + " * Created on $CURRENT_DATE/$CURRENT_MONTH/$CURRENT_YEAR at $CURRENT_HOUR:$CURRENT_MINUTE:$CURRENT_SECOND($CURRENT_TIMEZONE_OFFSET).", + " *", + " * ${1:__description__}", + " */" + ], + "prefix": [ + "/" + ], + "scope": "javascript,typescript,javascriptreact,typescriptreact" } } \ No newline at end of file diff --git a/codeforlife.code-workspace b/codeforlife.code-workspace new file mode 100644 index 00000000..cca06fd5 --- /dev/null +++ b/codeforlife.code-workspace @@ -0,0 +1,58 @@ +{ + "folders": [ + { + "name": "workspace", + "path": "." + }, + { + "name": "aimmo", + "path": "aimmo" + }, + { + "name": "contributor-backend", + "path": "codeforlife-contributor-backend" + }, + { + "name": "deploy-appengine", + "path": "codeforlife-deploy-appengine" + }, + { + "name": "package-javascript", + "path": "codeforlife-package-javascript" + }, + { + "name": "package-python", + "path": "codeforlife-package-python" + }, + { + "name": "portal", + "path": "codeforlife-portal" + }, + { + "name": "portal-backend", + "path": "codeforlife-portal-backend" + }, + { + "name": "portal-frontend", + "path": "codeforlife-portal-frontend" + }, + { + "name": "sso", + "path": "codeforlife-sso" + }, + { + "name": "template-backend", + "path": "codeforlife-template-backend" + }, + { + "name": "rapid-router", + "path": "rapid-router" + } + ], + "settings": { + "autoDocstring.customTemplatePath": "python-docstring.mustache", + "workbench.colorCustomizations": { + "editorRuler.foreground": "#008000" + } + } +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 3946d0c3..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -# https://github.com/devcontainers -version: '1' -services: - base-service: - image: mcr.microsoft.com/devcontainers/base:ubuntu-22.04 - volumes: - # Mount the root folder that contains .git - - .:/workspace:cached - command: sleep infinity diff --git a/.vscode/extensions/autoDocstring/docstring.mustache b/python-docstring.mustache similarity index 100% rename from .vscode/extensions/autoDocstring/docstring.mustache rename to python-docstring.mustache