{ "name": "OSU Lazer API", "dockerComposeFile": "docker-compose.yml", "service": "devcontainer", "shutdownAction": "stopCompose", "workspaceFolder": "/workspaces/osu_lazer_api", "containerEnv": { "MYSQL_DATABASE": "osu_api", "MYSQL_USER": "osu_api", "MYSQL_PASSWORD": "password", "MYSQL_HOST": "mysql", "MYSQL_PORT": "3306" }, "runArgs": [ "--name", "g0v0-devcontainer", "--label", "jetbrains-attach=true" ], "customizations": { "vscode": { "extensions": [ "ms-python.python", "detachhead.basedpyright", "charliermarsh.ruff", "ms-python.debugpy", "ms-vscode.vscode-json", "redhat.vscode-yaml", "ms-vscode.docker", "rust-lang.rust-analyzer", "ms-dotnettools.csdevkit", "ms-dotnettools.csharp", "ms-dotnettools.vscode-dotnet-runtime", "ms-dotnettools.blazorwasm-companion", "editorconfig.editorconfig" ], "settings": { "python.defaultInterpreterPath": "/usr/local/bin/python", "python.terminal.activateEnvironment": true, "python.linting.enabled": true, "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": false, "python.formatting.provider": "none", "[python]": { "editor.defaultFormatter": "charliermarsh.ruff", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" } }, "ruff.enable": true, "ruff.lint.enable": true, "ruff.format.enable": true, "ruff.importStrategy": "fromEnvironment", "files.exclude": { "**/__pycache__": true, "**/*.pyc": true }, "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, "python.testing.pytestArgs": [ "." ], "terminal.integrated.defaultProfile.linux": "bash", "rust-analyzer.server.path": "rust-analyzer", "rust-analyzer.cargo.buildScripts.enable": true, "rust-analyzer.procMacro.enable": true, "[rust]": { "editor.defaultFormatter": "rust-lang.rust-analyzer", "editor.formatOnSave": true }, "dotnet.defaultSolution": "/workspaces/osu_lazer_api/spectator-server/osu.Server.Spectator.sln", "[csharp]": { "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.organizeImports": "explicit" } }, "dotnet.completion.showCompletionItemsFromUnimportedNamespaces": true, "dotnet.inlayHints.enableInlayHintsForParameters": true, "dotnet.inlayHints.enableInlayHintsForLiteralParameters": true, "dotnet.inlayHints.enableInlayHintsForIndexerParameters": true, "dotnet.inlayHints.enableInlayHintsForObjectCreationParameters": true, "dotnet.inlayHints.enableInlayHintsForOtherParameters": true, "dotnet.inlayHints.enableInlayHintsForTypes": true, "dotnet.inlayHints.enableInlayHintsForImplicitVariableTypes": true, "dotnet.inlayHints.enableInlayHintsForLambdaParameterTypes": true, "dotnet.inlayHints.enableInlayHintsForImplicitObjectCreation": true } } }, "features": { "ghcr.io/va-h/devcontainers-features/uv:1": {}, "ghcr.io/devcontainers/features/rust:1": { "version": "latest", "profile": "default" }, "ghcr.io/devcontainers/features/dotnet:2": { "version": "8.0" } }, "forwardPorts": [ 8000, 3306, 6379, 8086, 80, 8080 ], "postCreateCommand": "uv sync --dev --all-extras && uv run alembic upgrade head && uv run pre-commit install && cd spectator-server && dotnet restore && cd ../performance-server && dotnet restore", "remoteUser": "vscode" }