WIP: implement parser for legacy config
This is incomplete and doesn't work. It is committed here in case it is
necessary in future, but it's not going to be merged into the main
branch any time soon.
cargo: sort workspace members
vstorage: Definitions must implement Debug
vstorage: add missing type restriction
vstorage: impl TryFrom<String> for CollectionId
vstorage: remove unnecessary hashing of item-actions
libdav: add two pending markers for build_without_discovery
libdav: remove TODOs regarding timeouts
Timeouts can be implemented externally by just timing out returned
futures.
libdav: rename context_path() to base_url()
This returns the entire URL, not just a path.
libdav: make bootstrap part of the builder sequence
Previously one had to create a client _and then_ execute the discovery
(a.k.a.: bootstrap) process, which implied mutating the client itself.
Mutating the client is awkward, especially given that we're using a
builder in the first place.
This makes both clients immutable, including changing the visibility to
fields that can now be private.
libdav: tweak visibility of some pub(crate) components
libdav: make HTTP connector parametrisable
Allow consumers to use any Connector. This also enables using a
different TLS library or even a Unix Socket connector.
davcli: implement deletion for caldav
Add copyright header to newly added files
Bump pinned dependencies
And bump lockfile.
live_tests: bump simple_logger
The workspace previously had two different versions.
Refactor synchronisation implementation
The main goal here was to improve the separation between declaration,
planning and executing. These are not in three separate files, and they
each only import the module for the previous step, but not the next.
This also introduces a support for mapping collections across storages,
with a strong focus on providing a clean API to defined these mappings.
This API can be used by various frontends, including vdirsyncer itself.
The internal implementation could still use some improvements,
especially on the performance side. There are also some minor issues
with invalid input. Mainly: specifying mappings for the same collection
more than once will result in a failed synchronisation, rather than
reject the input entirely.