~whynothugo/pimsync

Implement monitoring for vdir storages

Implement storage monitoring for VdirStorage. Also update the interface
for the monitoring subsystem, based on needs discovered during this
implementation.

This likely isn't the final design; StorageMonitor::next_event likely
needs to be fallible. The API will continue evolving during upcoming
changes.

Fixes: https://todo.sr.ht/~whynothugo/pimsync/12
See: https://todo.sr.ht/~whynothugo/pimsync/103
pimsync: forbid unwrap
Extract parse_interval into function
Remove no-op reference
Use pre-fetched data during conflict resolution
Fetch conflicted items concurrently
Skip uploading if resolved item was unchanged

When resolving conflict resolution, if the item is unchanged on one
side, skip updating it.
Split conflict resolution function
Drop stdin lock

Conflicts are resolved in sequence, with no concurrency.
Delete bogus comment
Only print stale_collections if non-empty
Move non-generic functions out of generic block
Implement missing function for read-only wrapper
Replace storage-locks with file-locks

We mainly use these discretionary lock to avoid concurrent instances
from overstepping on each other when replacing a file. Use per-filepath
locks at a storage level, and drop the higher level locks.
Update migration guide / missing features
Bump yanked dependency
Update documentation regarding URL discovery
Prepare changelog for v0.2.0
config: process cmd blocks early

Values specified in cmd blocks are resolved as storages are
instantiated. Some of these instantiations require network IO, so
prompting for credentials is interlined with network IO, which makes the
start-up process seem slow (e.g.: one has to wait for network IO before
being prompted for the next credential).

Process cmd blocks (which usually resolve credentials) early during
start-up, before any network IO happens. Make sure that this is done
only for storages which are actually enabled.

Fixes: https://todo.sr.ht/~whynothugo/pimsync/80
Document ListedProperty
Next