// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
    "name": "Advent22 API",

    // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "mcr.microsoft.com/devcontainers/python:3-3.14-trixie",

    // Features to add to the dev container. More info: https://containers.dev/features.
    "features": {
        "ghcr.io/devcontainers/features/git-lfs:1": {},
        "ghcr.io/devcontainers-extra/features/uv:1": {},
        "ghcr.io/devcontainers-extra/features/zsh-plugins:0": {
            "plugins": "git-flow uv"
        },
        "ghcr.io/devcontainers-extra/features/apt-get-packages:1": {
            "packages": "git-flow"
        },
        "ghcr.io/itsmechlark/features/redis-server:1": {}
    },

    "containerEnv": {
        "TZ": "Europe/Berlin",
        "UV_CACHE_DIR": "/workspaces/advent22/.uv_cache"
    },

    // Configure tool-specific properties.
    "customizations": {
        // Configure properties specific to VS Code.
        "vscode": {
            // Set *default* container specific settings.json values on container create.
            "settings": {
                "python.defaultInterpreterPath": "/usr/local/bin/python",
                "terminal.integrated.defaultProfile.linux": "zsh"
            },
            // Add the IDs of extensions you want installed when the container is created.
            "extensions": [
                "astral-sh.ty",
                "charliermarsh.ruff",
                "be5invis.toml",
                "mhutchie.git-graph",
                "ms-python.python",
                "ms-python.vscode-pylance"
            ]
        }
    },

    // Use 'postCreateCommand' to run commands after the container is created.
    "postCreateCommand": "uv tool install uv-upx",

    // Use 'postStartCommand' to run commands after the container is started.
    "postStartCommand": "uv tool upgrade uv-upx && uv sync"

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"
}