- Create comprehensive project status digest documentation - Add make update-digest target with Claude Code prerequisite check - Include current architecture, features, and development approach - Document repository structure and getting started guide - Add digest update workflow for version releases 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
177 lines
5.5 KiB
Makefile
177 lines
5.5 KiB
Makefile
# MarkiTect - Advanced Markdown Engine
|
|
# Makefile for common development tasks
|
|
|
|
.PHONY: help setup install test build clean update status dev lint format check-deps venv-status update-digest
|
|
|
|
# Default target
|
|
help:
|
|
@echo "MarkiTect Development Commands"
|
|
@echo "=============================="
|
|
@echo ""
|
|
@echo "Environment Status:"
|
|
@$(MAKE) --no-print-directory venv-status
|
|
@echo ""
|
|
@echo "Setup & Installation:"
|
|
@echo " setup - Initial project setup (venv + install)"
|
|
@echo " install - Install package in development mode"
|
|
@echo " dev - Install with development dependencies"
|
|
@echo " venv-status - Check if venv is active"
|
|
@echo ""
|
|
@echo "Development:"
|
|
@echo " test - Run all tests"
|
|
@echo " build - Build the package"
|
|
@echo " lint - Run code linting"
|
|
@echo " format - Format code"
|
|
@echo ""
|
|
@echo "Maintenance:"
|
|
@echo " update - Update from upstream (git + submodules)"
|
|
@echo " status - Show git status for repo and submodules"
|
|
@echo " clean - Clean build artifacts"
|
|
@echo " check-deps - Check dependency status"
|
|
@echo ""
|
|
@echo "Documentation:"
|
|
@echo " update-digest - Update ProjectStatusDigest.md (requires Claude Code)"
|
|
|
|
# Python and virtual environment setup
|
|
PYTHON := python3
|
|
VENV := .venv
|
|
VENV_PYTHON := $(VENV)/bin/python
|
|
VENV_PIP := $(VENV)/bin/pip
|
|
|
|
# Check virtual environment status (read-only)
|
|
venv-status:
|
|
@if [ -f $(VENV)/bin/activate ] && [ -f $(VENV)/bin/python ]; then \
|
|
if [ -n "$$VIRTUAL_ENV" ] && [ "$$VIRTUAL_ENV" = "$$(realpath $(VENV))" ]; then \
|
|
echo " ✅ Virtual environment: Active in current shell"; \
|
|
elif [ -n "$$VIRTUAL_ENV" ]; then \
|
|
echo " ⚠️ Virtual environment: Different venv active ($$VIRTUAL_ENV)"; \
|
|
echo " Run 'deactivate' then 'source $(VENV)/bin/activate'"; \
|
|
else \
|
|
echo " 📁 Virtual environment: Ready but not activated"; \
|
|
echo " Run 'source $(VENV)/bin/activate' to activate"; \
|
|
fi; \
|
|
else \
|
|
echo " ❌ Virtual environment: Not found"; \
|
|
echo " Run 'make setup' to create and configure"; \
|
|
fi
|
|
|
|
# Setup virtual environment and install package
|
|
setup: $(VENV)/bin/activate install
|
|
@echo "✅ Project setup complete!"
|
|
|
|
$(VENV)/bin/activate:
|
|
@echo "🔧 Creating virtual environment..."
|
|
$(PYTHON) -m venv $(VENV)
|
|
$(VENV_PIP) install --upgrade pip setuptools wheel
|
|
|
|
# Install package in development mode
|
|
install: $(VENV)/bin/activate
|
|
@echo "📦 Installing MarkiTect in development mode..."
|
|
$(VENV_PIP) install -e .
|
|
|
|
# Install with development dependencies
|
|
dev: install
|
|
@echo "🛠️ Installing development dependencies..."
|
|
$(VENV_PIP) install pytest pytest-cov black flake8 mypy
|
|
|
|
# Run tests
|
|
test: $(VENV)/bin/activate
|
|
@echo "🧪 Running tests..."
|
|
@if [ -f $(VENV)/bin/pytest ]; then \
|
|
$(VENV)/bin/pytest tests/ -v; \
|
|
else \
|
|
$(VENV_PYTHON) -m pytest tests/ -v 2>/dev/null || \
|
|
$(VENV_PYTHON) -m unittest discover tests/ -v; \
|
|
fi
|
|
|
|
# Build the package
|
|
build: $(VENV)/bin/activate
|
|
@echo "🏗️ Building package..."
|
|
$(VENV_PYTHON) -m build 2>/dev/null || \
|
|
$(VENV_PIP) install build && $(VENV_PYTHON) -m build
|
|
|
|
# Code linting
|
|
lint: $(VENV)/bin/activate
|
|
@echo "🔍 Running linting..."
|
|
@if [ -f $(VENV)/bin/flake8 ]; then \
|
|
$(VENV)/bin/flake8 markitect/ tests/; \
|
|
else \
|
|
echo "⚠️ flake8 not installed. Run 'make dev' first."; \
|
|
fi
|
|
|
|
# Code formatting
|
|
format: $(VENV)/bin/activate
|
|
@echo "✨ Formatting code..."
|
|
@if [ -f $(VENV)/bin/black ]; then \
|
|
$(VENV)/bin/black markitect/ tests/; \
|
|
else \
|
|
echo "⚠️ black not installed. Run 'make dev' first."; \
|
|
fi
|
|
|
|
# Update from upstream
|
|
update:
|
|
@echo "🔄 Updating from upstream..."
|
|
@git status --porcelain | grep -q . && echo "⚠️ Working directory not clean. Commit or stash changes first." && exit 1 || true
|
|
git pull origin main
|
|
git submodule update --remote
|
|
@if git status --porcelain | grep -q "wiki"; then \
|
|
echo "📝 Committing wiki submodule update..."; \
|
|
git add wiki; \
|
|
git commit -m "Update wiki submodule to latest"; \
|
|
fi
|
|
@echo "✅ Update complete!"
|
|
|
|
# Show git status
|
|
status:
|
|
@echo "📊 Repository Status"
|
|
@echo "==================="
|
|
@echo ""
|
|
@echo "Main Repository:"
|
|
git status --short
|
|
@echo ""
|
|
@echo "Wiki Submodule:"
|
|
@cd wiki && git status --short
|
|
@echo ""
|
|
@echo "Recent Commits:"
|
|
git log --oneline -5
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
@echo "🧹 Cleaning build artifacts..."
|
|
rm -rf build/
|
|
rm -rf dist/
|
|
rm -rf *.egg-info/
|
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
find . -name "*.pyc" -delete 2>/dev/null || true
|
|
@echo "✅ Clean complete!"
|
|
|
|
# Check dependency status
|
|
check-deps: $(VENV)/bin/activate
|
|
@echo "📋 Dependency Status"
|
|
@echo "==================="
|
|
@echo ""
|
|
@echo "Python version:"
|
|
$(VENV_PYTHON) --version
|
|
@echo ""
|
|
@echo "Installed packages:"
|
|
$(VENV_PIP) list
|
|
@echo ""
|
|
@echo "Project dependencies:"
|
|
$(VENV_PIP) check
|
|
|
|
# Update project status digest (requires Claude Code)
|
|
update-digest:
|
|
@echo "🔍 Checking for Claude Code availability..."
|
|
@if ! command -v claude >/dev/null 2>&1; then \
|
|
echo "❌ Claude Code not found in PATH"; \
|
|
echo " This target requires Claude Code CLI to be installed"; \
|
|
echo " Visit: https://claude.ai/code for installation instructions"; \
|
|
exit 1; \
|
|
fi
|
|
@echo "✅ Claude Code found"
|
|
@echo "📝 Updating ProjectStatusDigest.md..."
|
|
@echo " Please ask Claude Code to update the project digest based on current state"
|
|
@echo " Command: 'Please update ProjectStatusDigest.md with the current project state'"
|
|
@echo ""
|
|
@echo "💡 Tip: You can also manually edit ProjectStatusDigest.md if needed"
|