// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.238.0/containers/python-3-postgres
// Update the VARIANT arg in docker-compose.yml to pick a Python version
{
  "name": "NetBox Plugin Development",
  "dockerComposeFile": ["docker-compose.yml", "docker-compose.override.yml"],
  "service": "netbox",
  //"workspaceMount": "source=${localWorkspaceFolder},target=/opt/netbox/netbox/netbox-acls,type=bind,consistency=cached",
  "workspaceFolder": "/opt/netbox/netbox/netbox-acls",

  "overrideCommand": false,

  // Configure tool-specific properties.
  "customizations": {
    // Configure properties specific to VS Code.
    "vscode": {
      // Set *default* container specific settings.json values on container create.
      "settings": {
        "editor.experimental.stickyScroll.enabled": true,
        //"[python]": {
        //	"editor.codeActionsOnSave": {
        //		"source.organizeImports": true
        //	}
        //},
        "isort.args": ["--profile=black"],
        "isort.path": ["/opt/netbox/venv/bin/isort"],
        "python.analysis.typeCheckingMode": "strict",
        "python.analysis.extraPaths": ["/opt/netbox/netbox"],
        "python.autoComplete.extraPaths": ["/opt/netbox/netbox"],
        "python.defaultInterpreterPath": "/opt/netbox/venv/bin/python3",
        "python.formatting.autopep8Path": "/opt/netbox/venv/bin/autopep8",
        "python.formatting.blackPath": "/opt/netbox/venv/bin/black",
        "python.formatting.provider": "black",
        "python.formatting.yapfPath": "/opt/netbox/venv/bin/yapf",
        "python.linting.banditPath": "/opt/netbox/venv/bin/bandit",
        "python.linting.enabled": true,
        "python.linting.flake8Path": "/opt/netbox/venv/bin/flake8",
        "python.linting.flake8Args": ["--max-line-length=160", "--ignore=E203"],
        "python.linting.mypyPath": "//opt/netbox/venv/bin/mypy",
        "python.linting.pycodestylePath": "/opt/netbox/venv/bin/pycodestyle",
        "python.linting.pydocstylePath": "/opt/netbox/venv/bin/pydocstyle",
        "python.linting.pylintArgs": [
          "--load-plugins",
          "pylint_django",
          "--errors-only",
          "--load-plugins=pylint_django",
          "--django-settings-module=/opt/netbox/netbox/netbox/netbox.settings",
          "--enable=W0602,W0611,W0612,W0613,W0614"
        ],
        "python.linting.pylintEnabled": true,
        "python.linting.pylintPath": "/opt/netbox/venv/bin/pylint",
        "python.linting.lintOnSave": true,
        "python.pythonPath": "/opt/netbox/venv/bin/python3",
        "python.terminal.activateEnvironment": true,
        "python.venvPath": "/opt/netbox/",
        "files.exclude": {
          "**/node_modules": true,
          "build": true,
          "dist": true,
          "*egg*": true
        }
      },

      // Add the IDs of extensions you want installed when the container is created.
      "extensions": [
        "DavidAnson.vscode-markdownlint",
        "GitHub.codespaces",
        "GitHub.copilot-labs",
        "GitHub.vscode-pull-request-github",
        "Gruntfuggly.todo-tree",
        "Tyriar.sort-lines",
        "aaron-bond.better-comments",
        "batisteo.vscode-django",
        "charliermarsh.ruff",
        "codezombiech.gitignore",
        "esbenp.prettier-vscode",
        "exiasr.hadolint",
        "formulahendry.auto-rename-tag",
        "mintlify.document",
        "ms-python.isort",
        "ms-python.pylint",
        "ms-python.python",
        "ms-python.vscode-pylance",
        "ms-vscode.makefile-tools",
        "mutantdino.resourcemonitor",
        "oderwat.indent-rainbow",
        "paulomenezes.duplicated-code",
        "redhat.vscode-yaml",
        "searKing.preview-vscode",
        "sourcery.sourcery",
        "wholroyd.jinja",
        "yzhang.markdown-all-in-one"
      ]
    }
  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally.
  // This can be used to network with other containers or the host.
  // "forwardPorts": [5000, 5432],

  // Use 'postCreateCommand' to run commands after the container is created.
  // "postCreateCommand": "pip install --user -r requirements-dev.txt",

  //"postAttachCommand": "source /opt/netbox/venv/bin/activate",

  // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
  "remoteUser": "vscode"
}
