Makefile improvements + pre-commit hook (#340)

* Makefile improvements + pre-commit hook

* update make target in CI

* fix CI more

* .gitignore update

* couple more Makefile refinements

* make target-version explicit on ruff import sorting
This commit is contained in:
Gretchen Leigh Miller 2025-03-07 16:45:53 -08:00 committed by GitHub
parent f64db214d4
commit 65b0b5f50b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 71 additions and 10 deletions

View File

@ -20,12 +20,12 @@ jobs:
with:
python-version: '3.8'
- name: Create virtual environment
run: python -m venv venv
run: python -m venv .venv
- name: Install ruff
run: |
./venv/bin/pip install --upgrade pip
./venv/bin/pip install ruff
./.venv/bin/pip install --upgrade pip
./.venv/bin/pip install ruff
- name: Run formatting check
run: make ck-format
run: make check-format

9
.gitignore vendored
View File

@ -1,6 +1,13 @@
*.pyc
*.diff
.*.sw*
/brozzler.egg-info/
venv
.venv
# build artifacts
build/
brozzler.egg-info/
# editor config
.idea
.vscode

View File

@ -1,7 +1,50 @@
# Build constants
PYTHON_VERSION = 3.12
VIRTUAL_ENV_DIR = .venv
BROZZLER_EGG_LINK = ./brozzler.egg-info
# Where's the Makefile running? Valid options: LOCAL, CI
ENV ?= LOCAL
# Which package manager to use? Valid options: UV, PIP
PACKAGE_MANAGER ?= UV
$(VIRTUAL_ENV_DIR):
ifeq ($(PACKAGE_MANAGER),UV)
uv venv -p python$(PYTHON_VERSION) $@
else ifeq ($(PACKAGE_MANAGER),PIP)
python$(PYTHON_VERSION) -m venv $@
endif
.PHONY: venv
venv: $(VIRTUAL_ENV_DIR)
$(BROZZLER_EGG_LINK): $(VIRTUAL_ENV_DIR) pyproject.toml
ifeq ($(PACKAGE_MANAGER),UV)
VIRTUAL_ENV=$(shell pwd)/$(VIRTUAL_ENV_DIR) uv build
else ifeq ($(PACKAGE_MANAGER),PIP)
VIRTUAL_ENV=$(shell pwd)/$(VIRTUAL_ENV_DIR) pip$(PYTHON_VERSION) wheel --no-deps --wheel-dir dist .
endif
.PHONY: build
build: $(BROZZLER_EGG_LINK)
.PHONY: clean
clean: $(BROZZLER_EGG_LINK)
rm -rf $(BROZZLER_EGG_LINK)
rm -rf $(shell pwd)/dist
.git/hooks/pre-commit:
ln -s $(realpath ./dev/pre-commit) $@
.PHONY: check
check:
$(VIRTUAL_ENV_DIR)/bin/ruff check --target-version py37 .
.PHONY: check-format
check-format:
$(VIRTUAL_ENV_DIR)/bin/ruff check --select I --target-version py37 .
$(VIRTUAL_ENV_DIR)/bin/ruff format --check --target-version py37 .
.PHONY: format
format:
venv/bin/ruff format --target-version py37 .
.PHONY: ck-format
ck-format:
venv/bin/ruff format --check --target-version py37 .
$(VIRTUAL_ENV_DIR)/bin/ruff check --select I --target-version py37 --fix .
$(VIRTUAL_ENV_DIR)/bin/ruff format --target-version py37 .

11
dev/pre-commit Normal file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env bash
set -euo pipefail
# pre-commit.sh
# -------------
# An optional script which runs checks on code before commits.
make check
make check-format