feat: add Makefile with pnpm integration and systemd daemon management
- Use pnpm for all build, dev, test, and quality check commands - Replace manual PID file handling with systemd service control - Add daemon-start, daemon-stop, daemon-restart, daemon-status, daemon-logs targets - Add enable/disable targets for boot startup management - Provide convenience aliases (stop, restart, status, logs) for common operations - Integrate with existing flynn.service systemd user service
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# Flynn Makefile
|
||||
# Self-hosted personal AI agent
|
||||
|
||||
.PHONY: build dev start stop restart status logs tui tui-fs tui-dev test test-run lint typecheck help daemon-start daemon-stop daemon-restart daemon-status daemon-logs enable disable
|
||||
|
||||
# Default target
|
||||
.DEFAULT_GOAL := help
|
||||
|
||||
# Build and development
|
||||
build: ## Compile TypeScript to dist/
|
||||
pnpm build
|
||||
|
||||
dev: ## Run daemon with watch mode
|
||||
pnpm dev
|
||||
|
||||
start: ## Start production build (foreground)
|
||||
node dist/cli/index.js start
|
||||
|
||||
# Systemd daemon management
|
||||
daemon-start: ## Start the systemd service
|
||||
systemctl --user start flynn.service
|
||||
@echo "Flynn daemon started"
|
||||
|
||||
daemon-stop: ## Stop the systemd service
|
||||
systemctl --user stop flynn.service
|
||||
@echo "Flynn daemon stopped"
|
||||
|
||||
daemon-restart: ## Restart the systemd service
|
||||
systemctl --user restart flynn.service
|
||||
@echo "Flynn daemon restarted"
|
||||
|
||||
daemon-status: ## Check systemd service status
|
||||
systemctl --user status flynn.service
|
||||
|
||||
daemon-logs: ## Show systemd service logs
|
||||
journalctl --user -u flynn.service -f
|
||||
|
||||
enable: ## Enable Flynn to start on boot
|
||||
systemctl --user enable flynn.service
|
||||
@echo "Flynn enabled to start on boot"
|
||||
|
||||
disable: ## Disable Flynn from starting on boot
|
||||
systemctl --user disable flynn.service
|
||||
@echo "Flynn disabled from starting on boot"
|
||||
|
||||
# Aliases for convenience
|
||||
stop: daemon-stop ## Alias for daemon-stop
|
||||
restart: daemon-restart ## Alias for daemon-restart
|
||||
status: daemon-status ## Alias for daemon-status
|
||||
logs: daemon-logs ## Alias for daemon-logs
|
||||
|
||||
# TUI commands
|
||||
tui: ## Run TUI in minimal mode (readline)
|
||||
pnpm tui
|
||||
|
||||
tui-fs: ## Run TUI in fullscreen mode (React/Ink)
|
||||
pnpm tui:fs
|
||||
|
||||
tui-dev: ## Run TUI with watch mode
|
||||
pnpm tui:dev
|
||||
|
||||
# Testing
|
||||
test: ## Run tests in watch mode
|
||||
pnpm test
|
||||
|
||||
test-run: ## Run tests once (no watch)
|
||||
pnpm test:run
|
||||
|
||||
# Quality checks
|
||||
lint: ## Run ESLint
|
||||
pnpm lint
|
||||
|
||||
typecheck: ## Run TypeScript compiler (no emit)
|
||||
pnpm typecheck
|
||||
|
||||
check: lint typecheck test-run ## Run all checks (lint, typecheck, test)
|
||||
|
||||
# Dependencies
|
||||
install: ## Install dependencies
|
||||
pnpm install
|
||||
|
||||
# Utilities
|
||||
help: ## Show this help message
|
||||
@echo "Flynn - Self-hosted personal AI agent"
|
||||
@echo ""
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
|
||||
Reference in New Issue
Block a user