Files

74 lines
2.0 KiB
Makefile

.PHONY: build up down logs status health authorize sync sync-all shell clean
# Build the Docker image
build:
docker compose build
# Start the sync daemon
up:
docker compose up -d
@echo "Container started. Use 'make logs' to follow logs."
# Stop the container
down:
docker compose down
# Follow logs
logs:
docker logs -f email-sync-oauth2
# Show status of all accounts
status:
@echo "=== Container Status ==="
@docker inspect --format='Status: {{.State.Status}}' email-sync-oauth2 2>/dev/null || echo "Container not running"
@echo ""
@echo "=== Health Status ==="
@docker inspect --format='Health: {{.State.Health.Status}}' email-sync-oauth2 2>/dev/null || echo "No healthcheck"
@echo ""
@echo "=== Last Sync Times ==="
@for f in logs/*.last_success; do \
[ -f "$$f" ] && echo "$$(basename $$f .last_success): $$(date -d @$$(cat $$f) 2>/dev/null || echo 'unknown')"; \
done
@echo ""
@echo "=== Last Failures ==="
@for f in logs/*.last_failure; do \
[ -f "$$f" ] && echo "$$(basename $$f .last_failure): $$(date -d @$$(cat $$f) 2>/dev/null || echo 'unknown')"; \
done
# Check health
health:
@docker inspect --format='{{json .State.Health}}' email-sync-oauth2 | jq
# Authorize account (usage: make authorize ACCOUNT=1)
authorize:
@if [ -z "$(ACCOUNT)" ]; then \
echo "Usage: make authorize ACCOUNT=1"; \
exit 1; \
fi
docker compose run --rm imapsync authorize $(ACCOUNT)
# Force sync account (usage: make sync ACCOUNT=1)
sync:
@if [ -z "$(ACCOUNT)" ]; then \
echo "Usage: make sync ACCOUNT=1"; \
exit 1; \
fi
docker compose exec imapsync sync.sh sync $(ACCOUNT)
# Force a full batch now (all configured accounts)
sync-all:
docker compose exec imapsync sync.sh sync-all
# Enter container shell
shell:
docker compose exec imapsync sync.sh shell
# Clean up
clean:
docker compose down -v
rm -rf logs/*.log logs/*.last_* logs/.heartbeat logs/.notification_failed
# One-shot sync (build, run once, exit)
once:
ONCE=true docker compose up --build --abort-on-container-exit