dashboard sync app
This commit is contained in:
323
luk.egg-info/PKG-INFO
Normal file
323
luk.egg-info/PKG-INFO
Normal file
@@ -0,0 +1,323 @@
|
||||
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 <timothy@example.com>
|
||||
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
|
||||
76
luk.egg-info/SOURCES.txt
Normal file
76
luk.egg-info/SOURCES.txt
Normal file
@@ -0,0 +1,76 @@
|
||||
README.md
|
||||
pyproject.toml
|
||||
luk.egg-info/PKG-INFO
|
||||
luk.egg-info/SOURCES.txt
|
||||
luk.egg-info/dependency_links.txt
|
||||
luk.egg-info/entry_points.txt
|
||||
luk.egg-info/requires.txt
|
||||
luk.egg-info/top_level.txt
|
||||
src/cli/__init__.py
|
||||
src/cli/__main__.py
|
||||
src/cli/calendar.py
|
||||
src/cli/drive.py
|
||||
src/cli/email.py
|
||||
src/cli/gitlab_monitor.py
|
||||
src/cli/godspeed.py
|
||||
src/cli/sync.py
|
||||
src/cli/sync_daemon.py
|
||||
src/cli/sync_dashboard.py
|
||||
src/cli/ticktick.py
|
||||
src/maildir_gtd/__init__.py
|
||||
src/maildir_gtd/app.py
|
||||
src/maildir_gtd/email_viewer.tcss
|
||||
src/maildir_gtd/message_store.py
|
||||
src/maildir_gtd/utils.py
|
||||
src/maildir_gtd/actions/__init__.py
|
||||
src/maildir_gtd/actions/archive.py
|
||||
src/maildir_gtd/actions/delete.py
|
||||
src/maildir_gtd/actions/newest.py
|
||||
src/maildir_gtd/actions/next.py
|
||||
src/maildir_gtd/actions/oldest.py
|
||||
src/maildir_gtd/actions/open.py
|
||||
src/maildir_gtd/actions/previous.py
|
||||
src/maildir_gtd/actions/show_message.py
|
||||
src/maildir_gtd/actions/task.py
|
||||
src/maildir_gtd/screens/CreateTask.py
|
||||
src/maildir_gtd/screens/DocumentViewer.py
|
||||
src/maildir_gtd/screens/OpenMessage.py
|
||||
src/maildir_gtd/screens/__init__.py
|
||||
src/maildir_gtd/widgets/ContentContainer.py
|
||||
src/maildir_gtd/widgets/EnvelopeHeader.py
|
||||
src/maildir_gtd/widgets/__init__.py
|
||||
src/services/__init__.py
|
||||
src/services/gitlab_monitor/__init__.py
|
||||
src/services/gitlab_monitor/config.py
|
||||
src/services/gitlab_monitor/daemon.py
|
||||
src/services/gitlab_monitor/gitlab_client.py
|
||||
src/services/gitlab_monitor/notifications.py
|
||||
src/services/gitlab_monitor/openai_analyzer.py
|
||||
src/services/godspeed/__init__.py
|
||||
src/services/godspeed/client.py
|
||||
src/services/godspeed/config.py
|
||||
src/services/godspeed/sync.py
|
||||
src/services/himalaya/__init__.py
|
||||
src/services/himalaya/client.py
|
||||
src/services/microsoft_graph/__init__.py
|
||||
src/services/microsoft_graph/auth.py
|
||||
src/services/microsoft_graph/calendar.py
|
||||
src/services/microsoft_graph/client.py
|
||||
src/services/microsoft_graph/mail.py
|
||||
src/services/taskwarrior/__init__.py
|
||||
src/services/taskwarrior/client.py
|
||||
src/services/ticktick/__init__.py
|
||||
src/services/ticktick/auth.py
|
||||
src/services/ticktick/client.py
|
||||
src/services/ticktick/direct_client.py
|
||||
src/utils/calendar_utils.py
|
||||
src/utils/file_icons.py
|
||||
src/utils/notifications.py
|
||||
src/utils/platform.py
|
||||
src/utils/ticktick_utils.py
|
||||
src/utils/mail_utils/__init__.py
|
||||
src/utils/mail_utils/helpers.py
|
||||
src/utils/mail_utils/maildir.py
|
||||
tests/test_platform.py
|
||||
tests/test_sync_daemon.py
|
||||
tests/test_sync_dashboard.py
|
||||
1
luk.egg-info/dependency_links.txt
Normal file
1
luk.egg-info/dependency_links.txt
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
2
luk.egg-info/entry_points.txt
Normal file
2
luk.egg-info/entry_points.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
[console_scripts]
|
||||
luk = src.cli.__main__:main
|
||||
17
luk.egg-info/requires.txt
Normal file
17
luk.egg-info/requires.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
aiohttp>=3.11.18
|
||||
certifi>=2025.4.26
|
||||
click>=8.1.0
|
||||
html2text>=2025.4.15
|
||||
mammoth>=1.9.0
|
||||
markitdown[all]>=0.1.1
|
||||
msal>=1.32.3
|
||||
openai>=1.78.1
|
||||
orjson>=3.10.18
|
||||
pillow>=11.2.1
|
||||
python-dateutil>=2.9.0.post0
|
||||
python-docx>=1.1.2
|
||||
requests>=2.31.0
|
||||
rich>=14.0.0
|
||||
textual>=3.2.0
|
||||
textual-image>=0.8.2
|
||||
ticktick-py>=2.0.0
|
||||
1
luk.egg-info/top_level.txt
Normal file
1
luk.egg-info/top_level.txt
Normal file
@@ -0,0 +1 @@
|
||||
src
|
||||
Reference in New Issue
Block a user