|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BRIGHT_GREEN := $(shell tput -T screen setaf 10) |
|
DIM_GREEN := $(shell tput -T screen setaf 2) |
|
RESET := $(shell tput -T screen sgr0) |
|
|
|
|
|
SYS_PYTHON := python3 |
|
VENV_DIR := .venv |
|
PYTHON := $(VENV_DIR)/bin/python |
|
PIP := $(PYTHON) -m pip |
|
|
|
|
|
APP_MODULE := app.main:app |
|
PORT := 7860 |
|
|
|
|
|
IMG_NAME := matrix-ai:local |
|
SPACE_URL ?= https://huggingface.co/spaces/ruslanmv/matrix-ai |
|
|
|
|
|
REQ := requirements.txt |
|
TEST_DIR := tests |
|
|
|
.DEFAULT_GOAL := help |
|
|
|
|
|
|
|
|
|
help: |
|
@echo |
|
@echo "$(BRIGHT_GREEN)M A T R I X - A I ::: C O N T R O L P R O G R A M$(RESET)" |
|
@echo |
|
@printf "$(BRIGHT_GREEN) %-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "PROGRAM" "DESCRIPTION" |
|
@printf "$(BRIGHT_GREEN) %-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "----------------------" "--------------------------------------------------------" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)Environment$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "venv" "Create virtualenv (.venv)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "install" "Install deps into venv (incremental)" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)Quality$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "lint" "ruff check" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "fmt" "black + ruff fix" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "test" "pytest" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)Run$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "run" "Run uvicorn (PORT=$(PORT))" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "run-hot" "Run with --reload" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)RAG / Knowledge Base$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "kb" "Build/refresh KB from GitHub + local docs (writes data/kb.jsonl)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "kb-force" "Force rebuild KB (deletes existing data/kb.jsonl)" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)Docker$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "docker-build" "Build local image ($(IMG_NAME))" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "docker-run" "Run local container (maps $(PORT))" |
|
@echo |
|
@echo "$(BRIGHT_GREEN)HF Spaces helpers$(RESET)" |
|
@printf " $(BRIGHT_GREEN)%-22s$(RESET) $(DIM_GREEN)%s$(RESET)\n" "space-url" "Echo the Space URL (set SPACE_URL=...)" |
|
@echo |
|
|
|
|
|
|
|
|
|
$(VENV_DIR)/bin/activate: |
|
@test -d $(VENV_DIR) || $(SYS_PYTHON) -m venv $(VENV_DIR) |
|
|
|
venv: $(VENV_DIR)/bin/activate |
|
@echo "$(DIM_GREEN)-> Upgrading pip/setuptools/wheel$(RESET)" |
|
@$(PIP) install -U pip setuptools wheel >/dev/null |
|
|
|
install: venv |
|
@echo "$(DIM_GREEN)-> Installing deps$(RESET)" |
|
@$(PIP) install -r $(REQ) |
|
@echo "$(BRIGHT_GREEN)OK$(RESET)" |
|
|
|
|
|
|
|
|
|
lint: venv |
|
@$(PYTHON) -m ruff check app tests || true |
|
|
|
fmt: venv |
|
@$(PYTHON) -m black app tests || true |
|
@$(PYTHON) -m ruff check --fix app tests || true |
|
|
|
test: venv |
|
@$(PYTHON) -m pytest -q --disable-warnings --maxfail=1 || true |
|
|
|
|
|
|
|
|
|
run: install |
|
@PORT=$(PORT) $(VENV_DIR)/bin/uvicorn $(APP_MODULE) --host 0.0.0.0 --port $(PORT) |
|
|
|
run-hot: install |
|
@PORT=$(PORT) $(VENV_DIR)/bin/uvicorn $(APP_MODULE) --host 0.0.0.0 --port $(PORT) --reload |
|
|
|
|
|
|
|
|
|
kb: install |
|
@PYTHONPATH=. $(PYTHON) scripts/build_kb.py --config configs/rag_sources.yaml --out data/kb.jsonl |
|
|
|
kb-force: install |
|
@rm -f data/kb.jsonl && PYTHONPATH=. $(PYTHON) scripts/build_kb.py --config configs/rag_sources.yaml --out data/kb.jsonl |
|
|
|
|
|
|
|
|
|
docker-build: |
|
@docker build -t $(IMG_NAME) . |
|
|
|
docker-run: |
|
@docker run --rm -it -p $(PORT):$(PORT) -e PORT=$(PORT) $(IMG_NAME) |
|
|
|
|
|
|
|
|
|
space-url: |
|
@echo "Space: $(SPACE_URL)" |
|
|
|
|
|
|
|
|
|
clean: |
|
@rm -rf .venv __pycache__ .pytest_cache .ruff_cache .mypy_cache dist build *.egg-info |
|
|
|
.PHONY: help venv install lint fmt test run run-hot kb kb-force docker-build docker-run space-url clean |
|
|