Files
tikker/Makefile
T
retoor b8ecb8bd1a feat: add in-memory caching layer for frequently accessed data
Implement a simple in-memory cache using a dictionary with TTL support to reduce database load for repeated queries. The cache is integrated into the data retrieval functions, with configurable expiration times and automatic cleanup of stale entries.
2025-12-05 16:08:50 +00:00

104 lines
3.1 KiB
Makefile
Executable File

.PHONY: all clean test install help dev tikker plot process merge index popular
CC := gcc
CFLAGS := -Ofast -Wall -Wextra
DEBUG_FLAGS := -g -O0 -DDEBUG
LDFLAGS := -lsqlite3 -lpthread
INSTALL_PREFIX ?= /usr/local
BUILD_DIR := ./build
BIN_DIR := $(BUILD_DIR)/bin
PYTHON := python3
VENV := .venv
VENV_PYTHON := $(VENV)/bin/python
all: tikker
@echo "Build complete"
help:
@echo "Tikker Build System"
@echo ""
@echo "Build Targets:"
@echo " make tikker - Build tikker binary (default)"
@echo " make all - Same as tikker"
@echo " make dev - Build with debug symbols"
@echo " make clean - Remove build artifacts"
@echo " make install - Install binary to $(INSTALL_PREFIX)/bin"
@echo ""
@echo "Python Targets:"
@echo " make ensure_env - Create Python virtual environment"
@echo " make plot - Generate graphs and reports"
@echo " make process - Run processing pipeline"
@echo " make merge - Merge visualization outputs"
@echo " make index - Index words in database"
@echo " make popular - Show popular typed words"
@echo ""
@echo "Tikker Commands:"
@echo " ./tikker - Start keyboard monitoring"
@echo " ./tikker presses_today - Show today's keystrokes"
@echo " ./tikker stats daily - Daily statistics"
@echo " ./tikker stats hourly - Hourly breakdown"
@echo " ./tikker stats weekly - Weekly statistics"
@echo " ./tikker stats weekday - Weekday comparison"
@echo " ./tikker stats top-keys N - Top N keys"
@echo " ./tikker stats top-words N - Top N words"
@echo " ./tikker stats summary - Overall summary"
@echo " ./tikker decode FILE - Decode keystroke log"
@echo " ./tikker help - Show usage"
$(BIN_DIR):
@mkdir -p $(BIN_DIR)
tikker: $(BIN_DIR)
@echo "Building tikker..."
@$(CC) $(CFLAGS) tikker.c -o $(BIN_DIR)/tikker $(LDFLAGS)
@cp $(BIN_DIR)/tikker ./tikker
@echo "Built: ./tikker"
dev: CFLAGS := $(DEBUG_FLAGS)
dev: clean tikker
@echo "Debug build complete"
ensure_env:
@if [ ! -d "$(VENV)" ]; then \
$(PYTHON) -m venv $(VENV); \
$(VENV_PYTHON) -m pip install --upgrade pip; \
$(VENV_PYTHON) -m pip install matplotlib requests fastapi uvicorn openai dataset; \
echo "Virtual environment created at $(VENV)"; \
else \
echo "Virtual environment already exists"; \
fi
plot: ensure_env
@PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) plot.py
@$(VENV_PYTHON) merge.py
process: ensure_env
@PYTHONPATH=/home/retoor/bin $(VENV_PYTHON) process.py
merge: ensure_env
@$(VENV_PYTHON) merge.py
index: ensure_env
@$(VENV_PYTHON) tags.py --index
popular: ensure_env
@$(VENV_PYTHON) tags.py --popular
install: tikker
@echo "Installing to $(INSTALL_PREFIX)/bin..."
@mkdir -p $(INSTALL_PREFIX)/bin
@install -m 755 $(BIN_DIR)/tikker $(INSTALL_PREFIX)/bin/
@echo "Installed: $(INSTALL_PREFIX)/bin/tikker"
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(BUILD_DIR)
@rm -f tikker
@find . -name "*.o" -delete
@find . -name "*.gcov" -delete
@find . -name "*.gcda" -delete
@find . -name "*.gcno" -delete
@echo "Clean complete"