diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 30e84b8..5c367f2 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,58 +1,60 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-docker-compose { - "name": "FFC Extension", - // Update the 'dockerComposeFile' list if you have more compose files or use different names. - // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. - "dockerComposeFile": [ - "../docker-compose.yaml", - "docker-compose.yml" - ], - // The 'service' property is the name of the service for the container that VS Code should - // use. Update this value and .devcontainer/docker-compose.yml to the real service name. - "service": "app", - // The optional 'workspaceFolder' property is the path VS Code should open by default when - // connected. This is typically a file mount in .devcontainer/docker-compose.yml - "workspaceFolder": "/app", - "mounts": [ - "source=${localEnv:HOME}/.ssh,target=/root/.ssh,type=bind", - "source=${localEnv:HOME}/.claude,target=/root/.claude,type=bind", - "source=${localEnv:HOME}/.claude.json,target=/root/.claude.json,type=bind" - ], - // Features to add to the dev container. More info: https://containers.dev/features. - // "features": {}, - // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], - // Uncomment the next line if you want start specific services in your Docker Compose config. - "runServices": [ - "db", - "test_db" - ], - // Uncomment the next line if you want to keep your containers running after VS Code shuts down. - // "shutdownAction": "none", - // Uncomment the next line to run commands after the container is created. - // "postCreateCommand": "cat /etc/os-release", - // Configure tool-specific properties. - "customizations": { - "vscode": { - "extensions": [ - "ms-python.python", - "charliermarsh.ruff", - "ms-python.mypy-type-checker", - "anthropic.claude-code" - ], - "settings": { - "python.defaultInterpreterPath": "/opt/venv/bin/python" - } - }, - "jetbrains": { - "backend": "PyCharm", - "plugins": [ - "com.anthropic.code.plugin", - "org.sonarlint.idea" - ] - } - } - // Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root. - // "remoteUser": "devcontainer" + "name": "FFC Extension", + // Update the 'dockerComposeFile' list if you have more compose files or use different names. + // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. + "dockerComposeFile": [ + "../docker-compose.yaml", + "docker-compose.yml" + ], + // The 'service' property is the name of the service for the container that VS Code should + // use. Update this value and .devcontainer/docker-compose.yml to the real service name. + "service": "app", + // The optional 'workspaceFolder' property is the path VS Code should open by default when + // connected. This is typically a file mount in .devcontainer/docker-compose.yml + "workspaceFolder": "/app", + "mounts": [ + "source=${localEnv:HOME}/.ssh,target=/root/.ssh,type=bind", + "source=claude-state-${devcontainerId},target=/root/.claude,type=volume", + "source=jetbrains-cache,target=/root/.cache/JetBrains,type=volume", + "source=jetbrains-share,target=/root/.local/share/JetBrains,type=volume", + "source=jetbrains-config,target=/root/.config/JetBrains,type=volume" + ], + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + // Uncomment the next line if you want start specific services in your Docker Compose config. + "runServices": [ + "db", + "test_db" + ], + // Uncomment the next line if you want to keep your containers running after VS Code shuts down. + // "shutdownAction": "none", + // Uncomment the next line to run commands after the container is created. + // "postCreateCommand": "cat /etc/os-release", + // Configure tool-specific properties. + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "charliermarsh.ruff", + "ms-python.mypy-type-checker", + "anthropic.claude-code" + ], + "settings": { + "python.defaultInterpreterPath": "/opt/venv/bin/python" + } + }, + "jetbrains": { + "backend": "PyCharm", + "plugins": [ + "com.anthropic.code.plugin", + "com.github.yhk1038.claude-code-gui" + ] + } + } + // Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "devcontainer" } diff --git a/dev.Dockerfile b/dev.Dockerfile index 1680971..aad34fc 100644 --- a/dev.Dockerfile +++ b/dev.Dockerfile @@ -7,6 +7,10 @@ RUN apt-get update; \ apt-get clean -y; \ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* +RUN bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)" +RUN curl -sS https://starship.rs/install.sh | sh -s -- --yes +RUN echo 'eval "$(starship init bash)"' >> ~/.bashrc +COPY starship.toml /root/.config/starship.toml # Install Node.js @@ -65,7 +69,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \ ENV PYTEST_ADDOPTS="--rootdir=/app/backend -c /app/backend/pyproject.toml --cov-config /app/backend/pyproject.toml /app/backend" # Place executables in the environment at the front of the path -ENV PATH="/opt/venv/bin:$PATH" +RUN echo 'export PATH="/opt/venv/bin:$PATH"' >> ~/.bashrc COPY ./entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh diff --git a/starship.toml b/starship.toml new file mode 100644 index 0000000..253efd5 --- /dev/null +++ b/starship.toml @@ -0,0 +1,88 @@ +# ------------------------- +# GLOBAL SETTINGS +# ------------------------- +add_newline = false + +# Line 1: left (git, venv, cwd) + right (k8s, battery, time) +# Line 2: prompt symbol only +format = """$directory≻( $git_branch( $git_commit)( $git_status) ≻)( $python≻)$fill(≺$battery )(≺$time) +$character +""" + +# ------------------------- +# MODULE CONFIG +# ------------------------- + +[directory] +style = "bold fg:#585858" # CWD_THEME_PROMPT_COLOR=240 +truncation_length = 3 +read_only = " " +format = "[$path]($style)[$read_only]($read_only_style) " + +[git_branch] +format = "[$symbol$branch]($style)" +style = "bold fg:#005f5f" # SCM_THEME_PROMPT_CLEAN_COLOR=25 + +[git_status] +format = "[$ahead_behind$staged$modified$untracked]($style)" +style = "" # use per-part styles below +ahead = '[⇡${count}](bold fg:#5faf00)' +behind = '[⇣${count}](bold fg:#00afff)' +diverged = '[⇕⇡${ahead_count}⇣${behind_count}](bold fg:#ffaf00)' +staged = '[✚${count}](fg:#5f87ff)' +modified = '[~${count}](fg:#ff5f5f)' +untracked = '[?${count}](fg:#af87ff)' + +[git_commit] +format = "[@$hash]($style)" +commit_hash_length = 7 +only_detached = false +tag_disabled = true +style = "fg:#e8e8e8 dimmed" + +[python] +format = " [$symbol$virtualenv](style)" +detect_extensions = [] +detect_files = [] +style = "bold fg:#00af5f" # PYTHON_VENV_THEME_PROMPT_COLOR=35 + +[kubernetes] +disabled = false +format = " [⎈ $context]($style)" +style = "fg:#d70087" # KUBE_THEME_PROMPT_COLOR=161 + +[azure] +disabled = false +format = '[$symbol($subscription)]($style)' +symbol = '󰠅 ' +style = 'blue bold' + +[battery] +disabled = false +format = " [$symbol$percentage]($style)" +discharging_symbol = "" + +[[battery.display]] +threshold = 10 +style = 'bold red' + +[[battery.display]] +threshold = 40 +style = 'bold fg:#ffaf00' + +[[battery.display]] # show battery for anything up to 100% +threshold = 100 +style = 'bold fg:#5faf00' + +[time] +disabled = false +format = " [$time]($style)" +time_format = "%H:%M" # THEME_CLOCK_FORMAT +style = "fg:#585858 dimmed" # CLOCK_THEME_PROMPT_COLOR=240 + +[fill] +symbol = " " + +[character] +success_symbol = "➜" +error_symbol = "[➜](bold red)"