Files
Artemis-Eapil/Makefile
somew1nd 67248c887e feat: improve task execution, verification and packaging
Add execution incidents, action bursts and shared Flash history.

Expose verification and Explorer settings with streamed check results.

Support graceful cancellation, recording recovery and bundled UI resources.

Add CI quality checks and clean up comments and documentation.
2026-09-02 21:45:51 -07:00

116 lines
4.4 KiB
Makefile

# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
.PHONY: help test test-integration test-device test-all install install-deps setup start ui restart stop status build-ui doctor clean precommit-install precommit lint format typecheck quality-ratchet
help: ## Show this help message
@echo 'Usage: make [target]'
@echo ''
@echo 'Available targets:'
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
start: ## One-click start Artemis Showcase UI and auto-open browser
@bash start.sh
ui: ## Launch the unified Showcase UI & Admin Console in browser
@uv run artemis ui --open
restart: ## Restart running Artemis Web UI & server
@uv run artemis restart
stop: ## Stop running Artemis Web UI & server
@uv run artemis stop
status: ## Display Artemis Web UI & server status
@uv run artemis status
build-ui: ## Build the Showcase UI Angular frontend
@echo "🎨 Building Showcase UI..."
@cd apps/showcase_ui && npm install && npm run build
doctor: ## Run system, device, and toolchain diagnostics
@uv run artemis doctor
test: ## Run deterministic tests that need no device, credentials, or private services
@echo "πŸ§ͺ Running deterministic tests..."
@uv run pytest
test-integration: ## Run non-device integration tests (may require configured model credentials)
@echo "πŸ§ͺ Running integration tests..."
@uv run pytest tests/integration tests/tools -m "integration and not android and not cloud and not manual"
test-device: ## Run Android and end-to-end tests explicitly
@echo "πŸ“± Running device and end-to-end tests..."
@uv run pytest tests/integration tests/e2e -m "android or e2e"
test-all: ## Run every test tree; external prerequisites must be available
@echo "πŸ§ͺ Running the complete test tree..."
@uv run pytest tests packages/artemis-client/tests -m "integration or not integration"
install: ## Install python dependencies via uv
@echo "πŸ“¦ Installing python dependencies..."
@uv sync --dev
install-deps: ## One-click install all system dependencies (ADB, FFmpeg, scrcpy, Python, uv)
@echo "⚑ Running one-click dependency installer..."
@bash scripts/install_deps.sh
setup: ## Setup project (install dependencies + pre-commit hooks + build UI)
@echo "πŸš€ Setting up project..."
@$(MAKE) install
@$(MAKE) build-ui
@$(MAKE) precommit-install
@echo ""
@echo "βœ… Setup complete! You're ready to start developing."
lint: ## Run linting checks
@echo "πŸ” Running linting checks..."
@uv run ruff format --check
@uv run ruff check
@uv run python scripts/quality_ratchet.py
format: ## Format code
@echo "✨ Formatting code..."
@uv run ruff format
@uv run ruff check --fix
typecheck: ## Run type checking
@echo "πŸ” Running type checks..."
@uv run pyright --project pyright-core.json
quality-ratchet: ## Prevent broad exception and type-ignore debt from increasing
@uv run python scripts/quality_ratchet.py
precommit-install: ## Install pre-commit hooks
@echo "πŸ”§ Installing pre-commit hooks..."
@uv run pre-commit install
@echo "βœ… Pre-commit hooks installed successfully!"
@echo ""
@echo "Pre-commit will now run automatically on every commit."
@echo "To run manually: make precommit"
precommit: ## Run pre-commit hooks manually on all files
@echo "πŸ” Running pre-commit checks..."
@uv run pre-commit run --all-files
clean: ## Clean up generated files, caches, and traces
@echo "🧹 Cleaning up caches and temporary files..."
@rm -rf .pytest_cache .ruff_cache .artemis_paused traces scratch .venv apps/showcase_ui/.angular build dist
@find . -type d -name "outputs" -exec rm -rf {} + 2>/dev/null || true
@find . -type f -name ".artemis_paused" -delete 2>/dev/null || true
@find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
@find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
@find . -type f -name "*.py[cod]" -delete 2>/dev/null || true
@echo "βœ… Cleanup complete"