// 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
  "dockerComposeFile": "../../.devcontainer/docker_compose.yml",
  "service": "api",
  "workspaceFolder": "/workspaces/advent22/api",
  "runServices": ["api"],

  // 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"
}
