Files
Josh Corbett 2a45334b6c ci(frontend): retire legacy gates and share contract tooling
Run UI quality checks on webv2 and generate contracts with an independent locked API package.

Retain legacy type imports and bundle packaging; update generation commands, tests and ownership docs.
2026-09-29 18:47:06 -06:00

134 lines
4.5 KiB
Makefile

# simple Makefile with scripts that are otherwise hard to remember
# to use, run from the repo root `make <command>`
SHELL := /bin/bash
default: help
help:
@echo Developer commands:
@echo
@echo "ruff Run ruff, fixing any safely-fixable errors and formatting"
@echo "ruff-unsafe Run ruff, fixing all fixable errors and formatting"
@echo "mypy Run mypy using the config in pyproject.toml to identify type mismatches and other coding errors"
@echo "mypy-all Run mypy ignoring the config in pyproject.tom but still ignoring missing imports"
@echo "test Run the unit tests."
@echo "frontend-install Install the pnpm modules needed for the frontend"
@echo "frontend-build Build the frontend for localhost:9090"
@echo "frontend-legacy-install Install legacy frontend dependencies"
@echo "frontend-legacy-build Build the legacy frontend for --web-legacy"
@echo "frontend-test Run the frontend test suite once"
@echo "frontend-dev Run the frontend in developer mode on localhost:5173"
@echo "frontend-legacy-dev Run the legacy frontend development server"
@echo "frontend-api-install Install shared API generation dependencies"
@echo "frontend-openapi Generate the OpenAPI schema"
@echo "frontend-typegen Generate types for the frontend from the OpenAPI schema"
@echo "frontend-lint Run frontend checks and fixable lint/format steps"
@echo "wheel Build the wheel for the current version"
@echo "tag-release Tag the GitHub repository with the current version (use at release time only!)"
@echo "openapi Generate the OpenAPI schema for the app, outputting to stdout"
@echo "docs-install Install the pnpm modules needed for the docs site"
@echo "docs-dev Serve the astro starlight docs site with live reload"
@echo "docs-build Build the docs site for production"
@echo "docs-preview Preview the docs site locally"
# Runs ruff, fixing any safely-fixable errors and formatting
ruff:
cd invokeai && uv tool run [email protected] format
# Runs ruff, fixing all errors it can fix and formatting
ruff-unsafe:
ruff check . --fix --unsafe-fixes
ruff format
# Runs mypy, using the config in pyproject.toml
mypy:
mypy scripts/invokeai-web.py
# Runs mypy, ignoring the config in pyproject.toml but still ignoring missing (untyped) imports
# (many files are ignored by the config, so this is useful for checking all files)
mypy-all:
mypy scripts/invokeai-web.py --config-file= --ignore-missing-imports
# Run the unit tests
test:
pytest ./tests
# Install the pnpm modules needed for the front end
frontend-install:
rm -rf invokeai/frontend/webv2/node_modules
cd invokeai/frontend/webv2 && pnpm install
# Build the frontend
frontend-build:
cd invokeai/frontend/webv2 && pnpm build
# Compatibility aliases and explicit legacy commands
frontendv2-install: frontend-install
frontend-legacy-install:
rm -rf invokeai/frontend/webv1/node_modules
cd invokeai/frontend/webv1 && pnpm install
# Build the legacy frontend
frontendv2-build: frontend-build
frontend-legacy-build:
cd invokeai/frontend/webv1 && pnpm build
# Run the frontend test suite once
frontend-test:
cd invokeai/frontend/webv2 && pnpm test
# Run the frontend in dev mode
frontend-dev:
cd invokeai/frontend/webv2 && pnpm dev
# Run the legacy frontend in dev mode
frontendv2-dev: frontend-dev
frontend-legacy-dev:
cd invokeai/frontend/webv1 && pnpm run dev
# Install the shared contract generation tools
frontend-api-install:
pnpm -C invokeai/frontend/api install --frozen-lockfile
# Generate the OpenAPI Schema for the app
frontend-openapi:
cd invokeai/frontend/api && \
python ../../../scripts/generate_openapi_schema.py > openapi.json && \
pnpm format:openapi
frontend-typegen:
set -o pipefail; cd invokeai/frontend/api && python ../../../scripts/generate_openapi_schema.py | pnpm typegen
frontend-lint:
pnpm -C invokeai/frontend/webv2 lint
# Tag the release
wheel:
cd scripts && ./build_wheel.sh
# Tag the release
tag-release:
cd scripts && ./tag_release.sh
# Generate the OpenAPI Schema for the app
openapi:
python scripts/generate_openapi_schema.py
# Install the pnpm modules needed for the docs site
docs-install:
cd docs && pnpm install
# Serve the astro starlight docs site w/ live reload
docs-dev:
cd docs && pnpm run dev
docs-build:
cd docs && DEPLOY_TARGET='custom' pnpm run build
docs-preview:
cd docs && pnpm run preview