Clean action runtime project state
This commit is contained in:
83
Makefile
83
Makefile
@@ -1,7 +1,4 @@
|
||||
PYTHON ?= python3
|
||||
VENV_DIR ?= .venv
|
||||
VENV_BIN := $(VENV_DIR)/bin
|
||||
VENV_PYTHON := $(VENV_BIN)/python
|
||||
UV ?= uv
|
||||
SRC_DIR := $(CURDIR)/src
|
||||
ENTRYPOINT := src/flow/__main__.py
|
||||
DIST_DIR := dist
|
||||
@@ -10,64 +7,50 @@ SPEC_FILE := flow.spec
|
||||
BINARY := $(DIST_DIR)/flow
|
||||
INSTALL_DIR ?= $(HOME)/.local/bin
|
||||
|
||||
.PHONY: deps build install install-local check-binary clean help test test-e2e
|
||||
.PHONY: help deps test test-e2e check package build binary install install-local check-binary clean distclean
|
||||
|
||||
help:
|
||||
@printf "Targets:\n"
|
||||
@printf " make deps Create .venv and install build+dev dependencies\n"
|
||||
@printf " make build Build standalone binary at dist/flow\n"
|
||||
@printf " make install Build and install to ~/.local/bin/flow\n"
|
||||
@printf " make install-local Install binary to ~/.local/bin/flow\n"
|
||||
@printf " make check-binary Run dist/flow --help\n"
|
||||
@printf " make deps Sync locked dev/build dependencies into .venv\n"
|
||||
@printf " make test Run unit tests\n"
|
||||
@printf " make test-e2e Run end-to-end container tests (FLOW_RUN_E2E=1)\n"
|
||||
@printf " make clean Remove build artifacts\n"
|
||||
@printf " make test-e2e Run Docker/Podman e2e tests (FLOW_RUN_E2E=1)\n"
|
||||
@printf " make check Run unit tests and CLI smoke check\n"
|
||||
@printf " make package Build wheel and sdist into dist/\n"
|
||||
@printf " make build Build standalone binary at dist/flow\n"
|
||||
@printf " make install Build and install binary to ~/.local/bin/flow\n"
|
||||
@printf " make check-binary Run dist/flow --help\n"
|
||||
@printf " make clean Remove generated build/test artifacts\n"
|
||||
@printf " make distclean Also remove local virtualenvs\n"
|
||||
|
||||
deps:
|
||||
@set -eu; \
|
||||
if [ ! -x "$(VENV_PYTHON)" ]; then \
|
||||
if ! $(PYTHON) -m venv "$(VENV_DIR)" >/dev/null 2>&1; then \
|
||||
if command -v apt-get >/dev/null 2>&1; then \
|
||||
echo "venv support missing; installing python3-venv via apt-get (sudo required)"; \
|
||||
sudo apt-get update; \
|
||||
sudo apt-get install -y python3-venv; \
|
||||
elif command -v dnf >/dev/null 2>&1; then \
|
||||
echo "venv support missing; installing python3 via dnf (sudo required)"; \
|
||||
sudo dnf install -y python3; \
|
||||
elif command -v brew >/dev/null 2>&1; then \
|
||||
echo "venv support missing; installing python via Homebrew"; \
|
||||
brew install python; \
|
||||
else \
|
||||
echo "Unable to create virtualenv automatically. Install python venv support and rerun make deps."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
$(PYTHON) -m venv "$(VENV_DIR)"; \
|
||||
fi; \
|
||||
fi; \
|
||||
. "$(VENV_BIN)/activate"; \
|
||||
python -m pip install --upgrade pip; \
|
||||
python -m pip install -e ".[build,dev]"
|
||||
$(UV) sync --locked --extra build --extra dev
|
||||
|
||||
build: deps
|
||||
@set -eu; \
|
||||
. "$(VENV_BIN)/activate"; \
|
||||
python -m PyInstaller --noconfirm --clean --onefile --name flow --paths "$(SRC_DIR)" "$(ENTRYPOINT)"
|
||||
test:
|
||||
$(UV) run pytest tests/ -q --ignore=tests/e2e
|
||||
|
||||
install-local: build
|
||||
test-e2e:
|
||||
FLOW_RUN_E2E=1 $(UV) run pytest tests/e2e/ -v
|
||||
|
||||
check: test
|
||||
$(UV) run python -m flow --help >/dev/null
|
||||
$(UV) run python -m flow --version >/dev/null
|
||||
|
||||
package: deps
|
||||
$(UV) build
|
||||
|
||||
build binary: deps
|
||||
$(UV) run pyinstaller --noconfirm --clean --onefile --name flow --paths "$(SRC_DIR)" "$(ENTRYPOINT)"
|
||||
|
||||
install-local install: build
|
||||
mkdir -p "$(INSTALL_DIR)"
|
||||
install -m 755 "$(BINARY)" "$(INSTALL_DIR)/flow"
|
||||
@printf "Installed flow to $(INSTALL_DIR)/flow\n"
|
||||
|
||||
install: deps build install-local
|
||||
|
||||
check-binary:
|
||||
"./$(BINARY)" --help
|
||||
|
||||
test:
|
||||
$(VENV_PYTHON) -m pytest tests/ -q
|
||||
|
||||
test-e2e:
|
||||
FLOW_RUN_E2E=1 $(VENV_PYTHON) -m pytest tests/e2e/ -v
|
||||
"$(BINARY)" --help
|
||||
|
||||
clean:
|
||||
rm -rf "$(BUILD_DIR)" "$(DIST_DIR)" "$(SPEC_FILE)"
|
||||
rm -rf "$(BUILD_DIR)" "$(DIST_DIR)" "$(SPEC_FILE)" .coverage coverage.xml htmlcov .pytest_cache .ruff_cache .mypy_cache
|
||||
|
||||
distclean: clean
|
||||
rm -rf .venv venv
|
||||
|
||||
Reference in New Issue
Block a user