WebCal is calcalist's own (src/webcal.rs), with Calendar::split_by_uid to turn one feed document into one file per UID. Shared crate::http and crate::secret came out of google/ so every leg uses them. CalDAV follows, behind a per-endpoint 'native' flag so it can run beside pimsync one collection at a time: src/caldav/client.rs speaks PROPFIND, sync-collection, calendar-multiget and conditional PUT/DELETE, and src/caldav/mod.rs is the pull/push pair. Radicale answers an initial sync-collection with no members, so a cursor is only stored alongside a complete read. doctor reports what a server advertises. skip_past (src/horizon.rs) takes a date, not a flag: a rolling 'before now' would retire events from the aggregate as they aged, deleting yesterday's events on every cycle. Pinned to a date, what is mirrored stays mirrored. On the real configuration it leaves 2600 of 3282 events behind. The filter sits above the prior-links lookup in mirror_source, which is what makes it safe: from there DeleteSource is unreachable, so excluding an event can never be read as the user having deleted its mirror. pimsync: CWD pinned so vstorage's relative unlink cannot reach the user's files; the dry-run workspace is removed by Drop rather than by a line every '?' stepped over. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
27 lines
709 B
TOML
27 lines
709 B
TOML
[package]
|
|
name = "calcalist"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.97"
|
|
description = "Aggregate and sync events between CalDAV, Google Calendar and iCal feeds"
|
|
license = "MIT"
|
|
publish = false
|
|
|
|
[dependencies]
|
|
blake3 = "1.8"
|
|
clap = { version = "4.6", features = ["derive"] }
|
|
jiff = "0.2"
|
|
roxmltree = { version = "0.21.1", default-features = false, features = ["std"] }
|
|
rustix = { version = "1.1", features = ["fs"] }
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
sha2 = "0.11"
|
|
thiserror = "2.0"
|
|
toml = "1.1"
|
|
ureq = { version = "3.4", default-features = false, features = ["json", "rustls", "gzip"] }
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
|
|
[lints.rust]
|
|
unsafe_code = "forbid"
|