diff --git a/.github/workflows/python-formatting.yml b/.github/workflows/python-formatting.yml index 1a94232..0ee1f92 100644 --- a/.github/workflows/python-formatting.yml +++ b/.github/workflows/python-formatting.yml @@ -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 diff --git a/.gitignore b/.gitignore index 174149f..4cc3da8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,13 @@ *.pyc *.diff .*.sw* -/brozzler.egg-info/ venv +.venv + +# build artifacts +build/ +brozzler.egg-info/ + +# editor config .idea +.vscode diff --git a/Makefile b/Makefile index ae16af0..aaaa5b9 100644 --- a/Makefile +++ b/Makefile @@ -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 . diff --git a/dev/pre-commit b/dev/pre-commit new file mode 100644 index 0000000..c640966 --- /dev/null +++ b/dev/pre-commit @@ -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