diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..2c1d0d9 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,32 @@ +# Use the official Python image +FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim + +# Install the project into `/app` +WORKDIR /app +ADD . /app + +# Install system packages: +# curl +RUN apt-get update && apt-get install -y curl +# gnupg +RUN apt-get update && apt-get install -y gnupg +# git +RUN apt-get update && apt-get install -y git +# duckdb +RUN curl -sL https://install.duckdb.org | sh && \ + mkdir -p /usr/local/bin && \ + cp /root/.duckdb/cli/latest/duckdb /usr/local/bin/duckdb && \ + chmod +x /usr/local/bin/duckdb +# github cli +RUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | \ + gpg --dearmor -o /usr/share/keyrings/githubcli-archive-keyring.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | \ + tee /etc/apt/sources.list.d/github-cli.list > /dev/null && \ + apt-get update && apt-get install -y gh + +# Default shell +SHELL ["/bin/bash", "-c"] + +# Create vscode user to satisfy Codespaces requirement +RUN useradd -m vscode +USER vscode diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..568b4f3 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,32 @@ +{ + "name": "uv-python-dev", + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "charliermarsh.ruff", + "atlassian.atlascode", + "njpwerner.autodocstring", + "ms-azuretools.vscode-docker", + "github.vscode-github-actions", + "eamodio.gitlens", + "ms-toolsai.jupyter", + "mechatroner.rainbow-csv", + ], + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.autoSave": "afterDelay", + } + } + }, + "postCreateCommand": "uv venv --force && uv sync -v", + "features": {}, + "remoteUser": "vscode" +}