feat: Add comprehensive Nextcloud import functionality and fix compilation issues

Major additions:
- New NextcloudImportEngine with import behaviors (SkipDuplicates, Overwrite, Merge)
- Complete import workflow with result tracking and conflict resolution
- Support for dry-run mode and detailed progress reporting
- Import command integration in CLI with --import-events flag

Configuration improvements:
- Added ImportConfig struct for structured import settings
- Backward compatibility with legacy ImportTargetConfig
- Enhanced get_import_config() method supporting both formats

CalDAV client enhancements:
- Improved XML parsing for multiple calendar display name formats
- Better fallback handling for calendar discovery
- Enhanced error handling and debugging capabilities

Bug fixes:
- Fixed test compilation errors in error.rs (reqwest::Error type conversion)
- Resolved unused variable warning in main.rs
- All tests now pass (16/16)

Documentation:
- Added comprehensive NEXTCLOUD_IMPORT_PLAN.md with implementation roadmap
- Updated library exports to include new modules

Files changed:
- src/nextcloud_import.rs: New import engine implementation
- src/config.rs: Enhanced configuration with import support
- src/main.rs: Added import command and CLI integration
- src/minicaldav_client.rs: Improved calendar discovery and XML parsing
- src/error.rs: Fixed test compilation issues
- src/lib.rs: Updated module exports
- Deleted: src/real_caldav_client.rs (removed unused file)
This commit is contained in:
Alvaro Soliverez 2025-10-29 13:39:48 -03:00
parent 16d6fc375d
commit f84ce62f73
10 changed files with 1461 additions and 342 deletions

View file

@ -43,7 +43,7 @@ date_range = { days_ahead = 30, days_back = 30, sync_all_events = false }
# Target server configuration (e.g., Nextcloud)
[import.target_server]
# Nextcloud CalDAV URL
url = "https://cloud.soliverez.com.ar/remote.php/dav/calendars/alvaro/"
url = "https://cloud.soliverez.com.ar/remote.php/dav/calendars/alvaro/trabajo-alvaro"
# Username for Nextcloud authentication
username = "alvaro"
# Password for Nextcloud authentication (use app-specific password)