{
  "name": "MongoDB Development Container",
  "runArgs": [
    "--name=mongo-dev-${containerWorkspaceFolderBasename}-${devcontainerId}"
  ],
  "initializeCommand": "${localWorkspaceFolder}/.devcontainer/initialize.sh",
  "build": {
    "dockerfile": "./Dockerfile",
    "context": "..",
    "args": {
      "USERNAME": "${localEnv:USER}"
    }
  },
  "mounts": [
    {
      "source": "mongo-dev-home",
      "target": "/home",
      "type": "volume"
    },
    {
      "source": "engflow_auth",
      "target": "/home/${localEnv:USER}/.config/engflow_auth",
      "type": "volume"
    },
    {
      "source": "${containerWorkspaceFolderBasename}-cache",
      "target": "/home/${localEnv:USER}/.cache",
      "type": "volume"
    },
    {
      "source": "${containerWorkspaceFolderBasename}-python3-venv",
      "target": "${containerWorkspaceFolder}/python3-venv",
      "type": "volume"
    },
    {
      "source": "${localEnv:HOME}/.ssh",
      "target": "/home/${localEnv:USER}/.ssh",
      "type": "bind",
      "readonly": true
    }
  ],
  "containerEnv": {
    "HOME": "/home/${localEnv:USER}",
    "WORKSPACE_FOLDER": "${containerWorkspaceFolder}"
  },
  "remoteUser": "${localEnv:USER}",
  "containerUser": "${localEnv:USER}",
  "features": {
    "ghcr.io/devcontainers/features/git:1": {},
    "ghcr.io/devcontainers-community/features/bazel:1": {},
    "ghcr.io/devcontainers-extra/features/fzf:1": {},
    "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
      "moby": false
    },
    "ghcr.io/devcontainers/features/node:1": {
      "version": "lts"
    },
    "ghcr.io/devcontainers/features/common-utils:2": {
      "username": "${localEnv:USER}"
    }
  },
  "postCreateCommand": "WORKSPACE_FOLDER=${containerWorkspaceFolder} ${containerWorkspaceFolder}/.devcontainer/post-create.sh",
  "shutdownAction": "none",
  "portsAttributes": {
    "*": {
      "requireLocalPort": true
    }
  },
  "customizations": {
    "vscode": {
      "settings": {
        "clangd.checkUpdates": true,
        "clangd.path": "${workspaceFolder}/buildscripts/clangd_vscode.sh",
        "clang-format.executable": "${workspaceRoot}/buildscripts/clang_format_vscode.sh",
        "prettier.prettierPath": "bazel-bin/node_modules/.aspect_rules_js/prettier@3.4.2/node_modules/prettier",
        "clang-tidy.executable": "buildscripts/clang_tidy_vscode.py",
        "editor.codeActionsOnSave": {
          "source.fixAll.eslint": "explicit"
        },
        "eslint.validate": [
          "javascript"
        ],
        "files.associations": {
          "*.idl": "yaml"
        },
        "files.insertFinalNewline": true,
        "js/ts.implicitProjectConfig.target": "ES2020",
        "python.autoComplete.extraPaths": [
          "/opt/mongodbtoolchain/v5/share/gcc-14.2.0/python"
        ],
        "python.defaultInterpreterPath": "python3-venv/bin/python",
        "python.analysis.extraPaths": [
          "/opt/mongodbtoolchain/v5/share/gcc-14.2.0/python"
        ],
        "mypy-type-checker.path": [
          "${interpreter}",
          "-m",
          "mypy"
        ],
        "mypy-type-checker.importStrategy": "fromEnvironment",
        "editor.defaultFormatter": "esbenp.prettier-vscode",
        "[c]": {
          "editor.defaultFormatter": "xaver.clang-format",
          "editor.formatOnSave": true
        },
        "[cpp]": {
          "editor.defaultFormatter": "xaver.clang-format",
          "editor.formatOnSave": true
        },
        "[javascript]": {
          "editor.defaultFormatter": "esbenp.prettier-vscode",
          "editor.formatOnSave": true
        },
        "[python]": {
          "editor.formatOnSaveMode": "file",
          "editor.formatOnSave": true,
          "editor.defaultFormatter": "charliermarsh.ruff"
        },
        "[starlark]": {
          "editor.defaultFormatter": "BazelBuild.vscode-bazel"
        },
        "terminal.integrated.wordSeparators": " ()[]{}',\"`─''@",
        "yaml.schemas": {
          "./buildscripts/idl/idl_schema.yml": [
            "*.idl"
          ]
        },
        "C_Cpp.intelliSenseEngine": "disabled"
      },
      "extensions": [
        "llvm-vs-code-extensions.vscode-clangd",
        "dbaeumer.vscode-eslint",
        "ms-python.python",
        "xaver.clang-format",
        "cs128.cs128-clang-tidy",
        "charliermarsh.ruff",
        "ms-python.mypy-type-checker",
        "esbenp.prettier-vscode",
        "redhat.vscode-yaml",
        "streetsidesoftware.code-spell-checker",
        "jasonnutter.vscode-codeowners",
        "bazelbuild.vscode-bazel",
        "rioj7.command-variable",
        "augustocdias.tasks-shell-input",
        "ms-vscode.cpptools"
      ]
    }
  }
}