Clide is being rebuilt as a Flutter desktop app. The Python Textual implementation moves wholesale into legacy/ rather than being deleted: its pane model, panel set, git skills, and panel communication design are real thought that should remain readable next to the new code while the rebuild finds its shape. Git's rename tracking preserves history, so `git log -- legacy/` still works. The Flutter rebuild lives at the repo root alongside a Go sidecar (the architecture claudian was heading toward, which folds into clide as a core component rather than a separate plugin project). Bootstrap of the new shape lands in subsequent commits. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
122 lines
3.4 KiB
Makefile
122 lines
3.4 KiB
Makefile
.PHONY: setup run test test-single typecheck lint format build build-macos build-linux build-windows build-all clean help
|
|
|
|
PYTHON := python3.12
|
|
VENV := .venv
|
|
BIN := $(VENV)/bin
|
|
TEST ?= tests/
|
|
VERSION ?= 1.0.0
|
|
|
|
# Colors for output
|
|
BLUE := \033[0;34m
|
|
GREEN := \033[0;32m
|
|
RESET := \033[0m
|
|
|
|
help:
|
|
@printf "$(BLUE)Clide Development Commands$(RESET)\n"
|
|
@printf "\n"
|
|
@printf "$(GREEN)setup$(RESET) Create venv and install dependencies\n"
|
|
@printf "$(GREEN)run$(RESET) Run the application\n"
|
|
@printf "$(GREEN)test$(RESET) Run all tests\n"
|
|
@printf "$(GREEN)test-single$(RESET) Run single test (TEST=path::test_name)\n"
|
|
@printf "$(GREEN)typecheck$(RESET) Run mypy type checking\n"
|
|
@printf "$(GREEN)lint$(RESET) Run ruff linter\n"
|
|
@printf "$(GREEN)format$(RESET) Run ruff formatter\n"
|
|
@printf "$(GREEN)build$(RESET) Build executable for current platform\n"
|
|
@printf "$(GREEN)clean$(RESET) Remove build artifacts and caches\n"
|
|
@printf "\n"
|
|
@printf "$(BLUE)Distribution Builds$(RESET)\n"
|
|
@printf "\n"
|
|
@printf "$(GREEN)build-macos$(RESET) Build macOS DMG (VERSION=x.x.x)\n"
|
|
@printf "$(GREEN)build-linux$(RESET) Build Linux AppImage (VERSION=x.x.x)\n"
|
|
@printf "$(GREEN)build-windows$(RESET) Build Windows installer (VERSION=x.x.x)\n"
|
|
|
|
setup:
|
|
@echo "Creating virtual environment..."
|
|
$(PYTHON) -m venv $(VENV)
|
|
@echo "Installing dependencies..."
|
|
$(BIN)/pip install --upgrade pip
|
|
$(BIN)/pip install -e ".[dev,build]"
|
|
@echo "Installing pre-commit hooks..."
|
|
$(BIN)/pre-commit install || true
|
|
@printf "$(GREEN)Setup complete! Activate with: source $(VENV)/bin/activate$(RESET)\n"
|
|
|
|
run:
|
|
$(BIN)/python -m clide
|
|
|
|
test:
|
|
$(BIN)/pytest $(TEST)
|
|
|
|
test-single:
|
|
$(BIN)/pytest $(TEST) -v
|
|
|
|
test-cov:
|
|
$(BIN)/pytest --cov=clide/clide --cov-report=html --cov-report=term
|
|
|
|
test-snapshots:
|
|
$(BIN)/pytest tests/snapshots/
|
|
|
|
test-snapshots-update:
|
|
$(BIN)/pytest tests/snapshots/ --snapshot-update
|
|
|
|
typecheck:
|
|
$(BIN)/mypy clide/
|
|
|
|
lint:
|
|
$(BIN)/ruff check clide/ tests/
|
|
|
|
format:
|
|
$(BIN)/ruff format clide/ tests/
|
|
$(BIN)/ruff check --fix clide/ tests/
|
|
|
|
build:
|
|
$(BIN)/pyinstaller clide.spec --clean
|
|
|
|
build-onefile:
|
|
$(BIN)/pyinstaller \
|
|
--name clide \
|
|
--onefile \
|
|
--clean \
|
|
--noconfirm \
|
|
clide/clide/__main__.py
|
|
|
|
clean:
|
|
rm -rf $(VENV)
|
|
rm -rf dist/ build/
|
|
rm -rf .pytest_cache/ .mypy_cache/ .ruff_cache/
|
|
rm -rf htmlcov/ .coverage
|
|
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
|
find . -type f -name "*.pyc" -delete 2>/dev/null || true
|
|
|
|
# CI targets (for GitHub Actions)
|
|
ci-lint:
|
|
pip install ruff mypy
|
|
ruff check clide/ tests/
|
|
mypy clide/
|
|
|
|
ci-test:
|
|
pip install -e ".[dev]"
|
|
pytest --cov=clide/clide --cov-report=xml
|
|
|
|
ci-build:
|
|
pip install -e ".[build]"
|
|
pyinstaller clide.spec --clean
|
|
|
|
# Distribution builds
|
|
build-macos:
|
|
@printf "$(BLUE)Building macOS distribution...$(RESET)\n"
|
|
./scripts/build-macos.sh $(VERSION)
|
|
|
|
build-linux:
|
|
@printf "$(BLUE)Building Linux AppImage...$(RESET)\n"
|
|
./scripts/build-linux.sh $(VERSION)
|
|
|
|
build-windows:
|
|
@echo "$(BLUE)Building Windows installer...$(RESET)"
|
|
powershell -ExecutionPolicy Bypass -File scripts/build-windows.ps1 -Version $(VERSION)
|
|
|
|
build-all: build-linux
|
|
@printf "\n"
|
|
@printf "$(GREEN)Linux build complete.$(RESET)\n"
|
|
@printf "$(BLUE)Note:$(RESET) macOS build requires: make build-macos VERSION=$(VERSION)\n"
|
|
@printf "$(BLUE)Note:$(RESET) Windows build requires Windows: make build-windows VERSION=$(VERSION)\n"
|