Metadata-Version: 2.4 Name: luk Version: 0.1.0 Summary: A CLI tool for syncing Microsoft Outlook email, calendar, and tasks to local file-based formats. Look at your Outlook data locally. Author-email: Timothy Bendt License: MIT Project-URL: Homepage, https://github.com/timothybendt/luk Project-URL: Repository, https://github.com/timothybendt/luk Project-URL: Issues, https://github.com/timothybendt/luk/issues Project-URL: Documentation, https://github.com/timothybendt/luk#readme Keywords: email,calendar,tasks,sync,cli,microsoft-graph,outlook,maildir,vdir Classifier: Development Status :: 4 - Beta Classifier: Environment :: Console Classifier: Intended Audience :: End Users/Desktop Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Communications :: Email Classifier: Topic :: Office/Business :: Scheduling Classifier: Topic :: Utilities Requires-Python: >=3.12 Description-Content-Type: text/markdown Requires-Dist: aiohttp>=3.11.18 Requires-Dist: certifi>=2025.4.26 Requires-Dist: click>=8.1.0 Requires-Dist: html2text>=2025.4.15 Requires-Dist: mammoth>=1.9.0 Requires-Dist: markitdown[all]>=0.1.1 Requires-Dist: msal>=1.32.3 Requires-Dist: openai>=1.78.1 Requires-Dist: orjson>=3.10.18 Requires-Dist: pillow>=11.2.1 Requires-Dist: python-dateutil>=2.9.0.post0 Requires-Dist: python-docx>=1.1.2 Requires-Dist: requests>=2.31.0 Requires-Dist: rich>=14.0.0 Requires-Dist: textual>=3.2.0 Requires-Dist: textual-image>=0.8.2 Requires-Dist: ticktick-py>=2.0.0 # luk > Pronounced "look" - as in "look at your Outlook data locally" A CLI tool for syncing Microsoft Outlook email, calendar, and tasks to local file-based formats like Maildir and vdir. Use your favorite terminal tools to manage your email and calendar. ## Features - **Email Synchronization**: Sync emails with Microsoft Graph API to local Maildir format - **Calendar Management**: Two-way calendar sync with vdir/ICS support - **Task Integration**: Sync with Godspeed and TickTick task managers - **TUI Dashboard**: Interactive terminal dashboard for monitoring sync progress - **Daemon Mode**: Background daemon with proper Unix logging - **Cross-Platform**: Works on macOS, Linux, and Windows ## Quick Start ### Prerequisites - Python 3.12 or higher - `uv` package manager (recommended) ### Installation ```bash # Clone the repository git clone https://github.com/timothybendt/luk.git cd luk # Run the installation script ./install.sh ``` ### Manual Installation ```bash # Create virtual environment python3 -m venv .venv source .venv/bin/activate # Install dependencies pip install -e . # Setup configuration directories mkdir -p ~/.config/luk mkdir -p ~/.local/share/luk ``` ## Configuration Create a configuration file at `~/.config/luk/config.env`: ```bash # Microsoft Graph settings MICROSOFT_CLIENT_ID=your_client_id MICROSOFT_TENANT_ID=your_tenant_id # Email settings MAILDIR_PATH=~/Mail NOTES_DIR=~/Documents/Notes # Godspeed settings GODSPEED_EMAIL=your_email@example.com GODSPEED_PASSWORD=your_password GODSPEED_TOKEN=your_token GODSPEED_SYNC_DIR=~/Documents/Godspeed # TickTick settings TICKTICK_CLIENT_ID=your_client_id TICKTICK_CLIENT_SECRET=your_client_secret ``` ## Usage ### Basic Commands ```bash # Show help luk --help # Run sync with default settings luk sync run # Run with TUI dashboard luk sync run --dashboard # Start daemon mode luk sync run --daemon # Stop daemon luk sync stop # Check daemon status luk sync status ``` ### Sync Options ```bash # Dry run (no changes) luk sync run --dry-run # Specify organization luk sync run --org mycompany # Enable notifications luk sync run --notify # Download attachments luk sync run --download-attachments # Two-way calendar sync luk sync run --two-way-calendar # Custom calendar directory luk sync run --vdir ~/Calendars ``` ### Dashboard Mode The TUI dashboard provides real-time monitoring of sync operations: - **Status Display**: Current sync status and metrics - **Progress Bars**: Visual progress for each sync component - **Activity Log**: Scrollable log of all sync activities - **Keyboard Shortcuts**: - `q`: Quit dashboard - `l`: Toggle log visibility - `r`: Refresh status ### Daemon Mode Run luk as a background daemon with proper Unix logging: ```bash # Start daemon luk sync run --daemon # Check status luk sync status # View logs cat ~/.local/share/luk/luk.log # Stop daemon luk sync stop ``` Daemon logs are stored at `~/.local/share/luk/luk.log` with automatic rotation. ## Architecture ### Core Components - **Sync Engine**: Handles email, calendar, and task synchronization - **TUI Dashboard**: Interactive monitoring interface using Textual - **Daemon Service**: Background service with logging and process management - **Configuration**: Environment-based configuration system ### Directory Structure ``` src/ ├── cli/ # CLI commands and interfaces │ ├── sync.py # Main sync command │ ├── sync_dashboard.py # TUI dashboard │ ├── sync_daemon.py # Daemon service │ └── ... ├── services/ # External service integrations │ ├── microsoft_graph/ # Microsoft Graph API │ ├── godspeed/ # Godspeed task manager │ ├── ticktick/ # TickTick API │ └── ... └── utils/ # Utility functions ``` ## Development ### Setup Development Environment ```bash # Clone repository git clone https://github.com/timothybendt/luk.git cd luk # Install development dependencies uv sync --dev # Run tests uv run pytest # Run linting uv run ruff check . uv run ruff format . # Type checking uv run mypy src/ ``` ### Project Structure - `pyproject.toml`: Project configuration and dependencies - `src/cli/`: CLI commands and user interfaces - `src/services/`: External service integrations - `src/utils/`: Shared utilities and helpers - `tests/`: Test suite ### Building for Distribution ```bash # Build package uv run build # Check package uv run twine check dist/* # Upload to PyPI (for maintainers) uv run twine upload dist/* ``` ## Troubleshooting ### Common Issues 1. **Authentication Errors**: Ensure Microsoft Graph credentials are properly configured 2. **Permission Denied**: Check file permissions for Maildir and calendar directories 3. **Daemon Not Starting**: Verify log directory exists and is writable 4. **TUI Not Rendering**: Ensure terminal supports Textual requirements ### Debug Mode Enable debug logging: ```bash export LOG_LEVEL=DEBUG luk sync run --dry-run ``` ### Log Files - **Daemon Logs**: `~/.local/share/luk/luk.log` - **Sync State**: `~/.local/share/luk/sync_state.json` - **Configuration**: `~/.config/luk/` ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests for new functionality 5. Run the test suite 6. Submit a pull request ### Code Style This project uses: - **Ruff** for linting and formatting - **MyPy** for type checking - **Black** for code formatting - **Pre-commit** hooks for quality control ## License MIT License - see LICENSE file for details. ## Support - **Issues**: [GitHub Issues](https://github.com/timothybendt/luk/issues) - **Documentation**: [GitHub Wiki](https://github.com/timothybendt/luk/wiki) - **Discussions**: [GitHub Discussions](https://github.com/timothybendt/luk/discussions) ## Changelog ### v0.1.0 - Initial release - Email synchronization with Microsoft Graph - Calendar sync with vdir/ICS support - Godspeed and TickTick integration - TUI dashboard - Daemon mode with logging - Cross-platform support