.PHONY: help
help:
@echo "iron_token_manager - Development Commands"
@echo ""
@echo "Database Management:"
@grep -E '^db-[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
@echo "Validation:"
@grep -E '^validate[a-zA-Z_-]*:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
@echo "Testing:"
@grep -E '^test[a-zA-Z_-]*:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
@echo "Development:"
@grep -E '^(build|clean|check|fmt|clippy):.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
DB_PATH ?= ./iron.db
.PHONY: db-reset
db-reset:
@./scripts/reset_dev_db.sh $(DB_PATH)
.PHONY: db-seed
db-seed:
@./scripts/seed_dev_data.sh $(DB_PATH)
.PHONY: db-reset-seed
db-reset-seed:
@./scripts/reset_and_seed.sh $(DB_PATH)
.PHONY: db-inspect
db-inspect:
@sqlite3 $(DB_PATH)
.PHONY: db-schema
db-schema:
@sqlite3 $(DB_PATH) ".schema"
.PHONY: db-tables
db-tables:
@sqlite3 $(DB_PATH) ".tables"
.PHONY: db-users
db-users:
@sqlite3 $(DB_PATH) "SELECT id, username, role, super_user FROM users;"
.PHONY: db-tokens
db-tokens:
@sqlite3 $(DB_PATH) "SELECT id, user_id, name, is_active, created_at FROM api_tokens;"
.PHONY: db-usage
db-usage:
@sqlite3 $(DB_PATH) "SELECT COUNT(*) as total_requests, SUM(input_tokens) as total_input, SUM(output_tokens) as total_output, SUM(cost_cents)/100.0 as total_cost_usd FROM token_usage;"
.PHONY: db-backup
db-backup:
@mkdir -p ./backups
@cp $(DB_PATH) ./backups/manual_backup_$$(date +%Y%m%d_%H%M%S).db
@echo "Backup created in ./backups/"
.PHONY: db-clean
db-clean:
@read -p "Delete $(DB_PATH) and all backups? (y/N) " confirm && [ "$$confirm" = "y" ] || exit 1
@rm -f $(DB_PATH)
@rm -rf ./backups
@echo "Database and backups deleted"
.PHONY: validate
validate: validate-paths validate-schema validate-seed
.PHONY: validate-paths
validate-paths:
@./scripts/validate_db_paths.sh
.PHONY: validate-schema
validate-schema:
@./scripts/validate_db_schema.sh $(DB_PATH)
.PHONY: validate-seed
validate-seed:
@./scripts/validate_seed_data.sh $(DB_PATH)
.PHONY: install-hooks
install-hooks:
@echo "Installing pre-commit hook..."
@mkdir -p ../../.git/hooks
@cp scripts/pre-commit.hook ../../.git/hooks/pre-commit
@chmod +x ../../.git/hooks/pre-commit
@echo "✓ Pre-commit hook installed"
@echo " The hook will validate database paths before each commit"
.PHONY: uninstall-hooks
uninstall-hooks:
@if [ -f ../../.git/hooks/pre-commit ]; then \
rm ../../.git/hooks/pre-commit; \
echo "✓ Pre-commit hook uninstalled"; \
else \
echo "No pre-commit hook found"; \
fi
.PHONY: dev-fresh
dev-fresh:
@./scripts/dev_fresh.sh
.PHONY: dev-fresh-test
dev-fresh-test:
@./scripts/dev_fresh.sh --test
.PHONY: dev-fresh-quick
dev-fresh-quick:
@./scripts/dev_fresh.sh --quick
.PHONY: test
test:
@clear
@RUSTFLAGS="-D warnings" cargo nextest run --all-features
@RUSTDOCFLAGS="-D warnings" cargo test --doc --all-features
@cargo clippy --all-targets --all-features -- -D warnings
.PHONY: test-quick
test-quick:
@clear
@RUSTFLAGS="-D warnings" cargo nextest run --all-features
.PHONY: test-watch
test-watch:
@cargo watch -x "nextest run --all-features"
.PHONY: test-coverage
test-coverage:
@cargo llvm-cov nextest --all-features --html
@echo "Coverage report: target/llvm-cov/html/index.html"
.PHONY: build
build:
@cargo build --all-features
.PHONY: build-release
build-release:
@cargo build --all-features --release
.PHONY: check
check:
@cargo check --all-features
.PHONY: clippy
clippy:
@cargo clippy --all-targets --all-features -- -D warnings
.PHONY: clean
clean:
@cargo clean
@rm -f $(DB_PATH)
.PHONY: doc
doc:
@cargo doc --all-features --open
.PHONY: deps
deps:
@cargo tree
.PHONY: outdated
outdated:
@cargo outdated
.PHONY: ci
ci: clean test
.PHONY: pre-commit
pre-commit: test