{
  "name": "Frigate Devcontainer",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "devcontainer",
  "workspaceFolder": "/workspace/frigate",
  "initializeCommand": ".devcontainer/initialize.sh",
  "postCreateCommand": ".devcontainer/post_create.sh",
  "overrideCommand": false,
  "remoteUser": "vscode",
  "features": {
    "ghcr.io/devcontainers/features/common-utils:1": {}
  },
  "forwardPorts": [5000, 5001, 5173, 1935, 8554, 8555],
  "portsAttributes": {
    "5000": {
      "label": "NGINX",
      "onAutoForward": "silent"
    },
    "5001": {
      "label": "Frigate API",
      "onAutoForward": "silent"
    },
    "5173": {
      "label": "Vite Server",
      "onAutoForward": "silent"
    },
    "1935": {
      "label": "RTMP",
      "onAutoForward": "silent"
    },
    "8554": {
      "label": "gortc RTSP",
      "onAutoForward": "silent"
    },
    "8555": {
      "label": "go2rtc WebRTC",
      "onAutoForward": "silent"
    }
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-python.vscode-pylance",
        "ms-python.black-formatter",
        "visualstudioexptteam.vscodeintellicode",
        "mhutchie.git-graph",
        "ms-azuretools.vscode-docker",
        "streetsidesoftware.code-spell-checker",
        "esbenp.prettier-vscode",
        "dbaeumer.vscode-eslint",
        "mikestead.dotenv",
        "csstools.postcss",
        "blanu.vscode-styled-jsx",
        "bradlc.vscode-tailwindcss",
        "ms-python.isort",
        "charliermarsh.ruff"
      ],
      "settings": {
        "remote.autoForwardPorts": false,
        "python.linting.pylintEnabled": true,
        "python.linting.enabled": true,
        "python.formatting.provider": "none",
        "python.languageServer": "Pylance",
        "editor.formatOnPaste": false,
        "editor.formatOnSave": true,
        "editor.formatOnType": true,
        "python.testing.pytestEnabled": false,
        "python.testing.unittestEnabled": true,
        "python.testing.unittestArgs": ["-v", "-s", "./frigate/test"],
        "files.trimTrailingWhitespace": true,
        "eslint.workingDirectories": ["./web"],
        "isort.args": ["--settings-path=./pyproject.toml"],
        "[python]": {
          "editor.defaultFormatter": "ms-python.black-formatter",
          "editor.formatOnSave": true,
          "editor.codeActionsOnSave": {
            "source.fixAll": true,
            "source.organizeImports": true
          }
        },
        "[json][jsonc]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "[jsx][js][tsx][ts]": {
          "editor.codeActionsOnSave": [
            "source.addMissingImports",
            "source.fixAll"
          ],
          "editor.tabSize": 2
        },
        "cSpell.ignoreWords": ["rtmp"],
        "cSpell.words": ["preact", "astype", "hwaccel", "mqtt"]
      }
    }
  }
}
