mirror of
https://github.com/esphome/esphome.git
synced 2026-09-30 02:22:57 +08:00
CI / Create common environment (push) Canceled after 0s
CI / Seed apt package cache (push) Canceled after 0s
CI / Determine which jobs to run (push) Canceled after 0s
CI / Run script/ci-custom (push) Canceled after 0s
CI / Check pylint (push) Canceled after 0s
CI / Check lint and formatting (push) Canceled after 0s
CI / Run pytest (macOS-latest, 3.12) (push) Canceled after 0s
CI / Run pytest (macOS-latest, 3.14) (push) Canceled after 0s
CI / Run pytest (ubuntu-latest, 3.12) (push) Canceled after 0s
CI / Run pytest (ubuntu-latest, 3.13) (push) Canceled after 0s
CI / Run pytest (ubuntu-latest, 3.14) (push) Canceled after 0s
CI / Run pytest (windows-latest, 3.12) (push) Canceled after 0s
CI / Run pytest (windows-latest, 3.14) (push) Canceled after 0s
CI / Report no coverage to Codecov (push) Canceled after 0s
CI / Run integration tests () (push) Canceled after 0s
CI / Check import esphome.__main__ time (push) Canceled after 0s
CI / Run CodSpeed benchmarks (push) Canceled after 0s
CI / Run C++ unit tests (push) Canceled after 0s
CI / Run script/clang-tidy for LibreTiny (push) Canceled after 0s
CI / Run script/clang-tidy for ESP8266 (push) Canceled after 0s
CI / Run script/clang-tidy for RP2 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 Arduino (push) Canceled after 0s
CI / Run script/clang-tidy for ZEPHYR (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 IDF (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 IDF 1/3 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 IDF 2/3 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 IDF 3/3 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 C6 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 P4 (push) Canceled after 0s
CI / Run script/clang-tidy for ESP32 S3 (push) Canceled after 0s
CI / Test components batch () (push) Canceled after 0s
CI / Test esp32 components with PlatformIO (push) Canceled after 0s
CI / Test downstream esphome/device-builder (push) Canceled after 0s
CI / Build target branch for memory impact (push) Canceled after 0s
CI / Build PR branch for memory impact (push) Canceled after 0s
CI / Comment memory impact (push) Canceled after 0s
CI / CI Status (push) Canceled after 0s
72 lines
2.5 KiB
Bash
Executable File
72 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Set up ESPHome dev environment
|
|
|
|
set -e
|
|
|
|
cd "$(dirname "$0")/.."
|
|
if [ -n "$VIRTUAL_ENV" ]; then
|
|
# A virtual environment is already active (e.g. the devcontainer's pre-provisioned
|
|
# esphome-venv). Install into it rather than creating a ./venv in the workspace.
|
|
venv_state=active
|
|
elif [ -x venv/bin/python ]; then
|
|
# Reuse the environment from an earlier run, so this script can be run again
|
|
# at any time to pick up dependency changes.
|
|
venv_state=reused
|
|
source venv/bin/activate
|
|
else
|
|
venv_state=created
|
|
# --clear replaces a partial environment left behind by an interrupted run.
|
|
if [ -x "$(command -v uv)" ]; then
|
|
uv venv --clear --seed venv
|
|
else
|
|
python3 -m venv --clear venv
|
|
fi
|
|
source venv/bin/activate
|
|
fi
|
|
|
|
if ! [ -x "$(command -v uv)" ]; then
|
|
python3 -m pip install uv
|
|
fi
|
|
|
|
uv pip install setuptools wheel
|
|
uv pip install -e ".[dev,test]" --config-settings editable_mode=compat
|
|
|
|
# A worktree shares one git hooks directory with the main checkout it was
|
|
# created from, so hooks are installed from the main checkout only. Installing
|
|
# from a worktree would point the shared hook at that worktree's virtual
|
|
# environment, breaking it for everyone once the worktree is removed.
|
|
git_dir="$(git rev-parse --absolute-git-dir 2>/dev/null || true)"
|
|
common_dir="$(git rev-parse --path-format=absolute --git-common-dir 2>/dev/null || true)"
|
|
if [ -n "$common_dir" ] && [ "$git_dir" = "$common_dir" ]; then
|
|
# --overwrite replaces any hook already in place. Without it, prek finds a
|
|
# previously installed pre-commit hook, moves it aside to
|
|
# .git/hooks/pre-commit.legacy and keeps calling it, so every commit would
|
|
# run both tools.
|
|
prek install --overwrite
|
|
|
|
# Prepares the virtual environment for new checkouts and worktrees. Installed
|
|
# once here, it covers every worktree created from this checkout.
|
|
if [ -d "$common_dir/hooks" ]; then
|
|
cp script/git-hooks/post-checkout "$common_dir/hooks/post-checkout"
|
|
chmod +x "$common_dir/hooks/post-checkout"
|
|
fi
|
|
fi
|
|
|
|
mkdir -p .temp
|
|
|
|
echo
|
|
echo
|
|
case "$venv_state" in
|
|
created)
|
|
echo "Virtual environment created at ./venv. Run 'source venv/bin/activate' to use it."
|
|
;;
|
|
reused)
|
|
echo "Dependencies updated in the existing ./venv. Run 'source venv/bin/activate' to use it."
|
|
;;
|
|
active)
|
|
echo "Dependencies installed into the active virtual environment:"
|
|
echo " $VIRTUAL_ENV"
|
|
echo "It is already active in this shell, so no 'source venv/bin/activate' is needed."
|
|
;;
|
|
esac
|