feat: initial implementation
Asyncio IRC bot with decorator-based plugin system. Zero external dependencies, Python 3.11+. - IRC protocol: message parsing, formatting, async TCP/TLS connection - Plugin system: @command and @event decorators, file-based loading - Bot orchestrator: connect, dispatch, reconnect, nick recovery - CLI: argparse entry point with TOML config - Built-in plugins: ping, help, version, echo - 28 unit tests for parser and plugin system
This commit is contained in:
39
Makefile
Normal file
39
Makefile
Normal file
@@ -0,0 +1,39 @@
|
||||
.PHONY: install dev test lint clean help
|
||||
|
||||
VENV := .venv
|
||||
PIP := $(VENV)/bin/pip
|
||||
PYTHON := $(VENV)/bin/python
|
||||
PYTEST := $(VENV)/bin/pytest
|
||||
RUFF := $(VENV)/bin/ruff
|
||||
|
||||
help: ## Show this help
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
|
||||
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[38;5;110m%-12s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
venv: ## Create virtual environment
|
||||
python3 -m venv $(VENV)
|
||||
$(PIP) install --upgrade pip
|
||||
|
||||
install: venv ## Install package (editable)
|
||||
$(PIP) install -e .
|
||||
$(PIP) install pytest ruff
|
||||
|
||||
test: ## Run tests
|
||||
$(PYTEST) -v
|
||||
|
||||
lint: ## Run linter
|
||||
$(RUFF) check src/ tests/ plugins/
|
||||
|
||||
fmt: ## Format code
|
||||
$(RUFF) format src/ tests/ plugins/
|
||||
|
||||
run: ## Run the bot
|
||||
$(PYTHON) -m derp
|
||||
|
||||
clean: ## Remove build artifacts
|
||||
rm -rf build/ dist/ *.egg-info src/*.egg-info
|
||||
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
link: install ## Symlink to ~/.local/bin
|
||||
ln -sf $$(pwd)/$(VENV)/bin/derp ~/.local/bin/derp
|
||||
@echo "Installed: $$(which derp)"
|
||||
Reference in New Issue
Block a user