mirror of
https://github.com/pybricks/pybricks-api.git
synced 2026-07-28 04:07:46 +00:00
Now that we use a single release pipeline, the API itself might not yet be on PyPI by the time we build jedi, so we build it locally. We'll still keep the API docs on PyPI so users can have local autocomplete, but that path is no longer a dependency for building jedi. Also explain CHANGELOG synchronization with firmware repo.
43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build all release artifacts locally (equivalent to CI workflows, minus publish).
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(realpath "$(dirname "${BASH_SOURCE[0]}")")"
|
|
|
|
# Activate the project venv so python/make/etc. all use it without poetry run
|
|
source "$REPO_ROOT/.venv/bin/activate"
|
|
|
|
# Read version from pyproject.toml
|
|
VERSION=$(grep '^version = ' "$REPO_ROOT/pyproject.toml" | head -1 | sed 's/version = "\(.*\)"/\1/')
|
|
# Convert Python pre-release format (e.g. 4.0.0a1, 4.0.0b1, 4.0.0rc1) to npm semver (e.g. 4.0.0-alpha.1, 4.0.0-beta.1, 4.0.0-rc.1)
|
|
NPM_VERSION=$(echo "$VERSION" | sed 's/\([0-9]\)a\([0-9]\)/\1-alpha.\2/;s/\([0-9]\)b\([0-9]\)/\1-beta.\2/;s/\([0-9]\)rc\([0-9]\)/\1-rc.\2/')
|
|
echo "==> Building version $VERSION (npm: $NPM_VERSION)"
|
|
|
|
# lint
|
|
echo "==> Linting"
|
|
cd "$REPO_ROOT"
|
|
flake8
|
|
doc8
|
|
|
|
# pybricks-jedi tests
|
|
echo "==> Testing pybricks-jedi"
|
|
cd "$REPO_ROOT/jedi"
|
|
poetry run pytest -vv
|
|
|
|
# @pybricks/jedi npm package
|
|
echo "==> Building @pybricks/jedi"
|
|
cd "$REPO_ROOT/jedi"
|
|
python3 build.py "$NPM_VERSION"
|
|
|
|
# @pybricks/ide-docs npm package
|
|
echo "==> Building @pybricks/ide-docs"
|
|
cd "$REPO_ROOT"
|
|
make -C doc clean
|
|
cd "$REPO_ROOT/npm/ide-docs"
|
|
yarn build
|
|
|
|
echo ""
|
|
echo "Build complete."
|
|
echo " jedi npm package : jedi/npm-build/"
|
|
echo " ide-docs : npm/ide-docs/html/"
|