Add infrastructure for custom logic migration support between versions,
allowing breaking changes in for example configuration to be handled by
the application instead of the user.
The current version will be stored in ${XDG_DATA_HOME}/meli/.version
If at launch the versions do not match, the application will examine
whether there are any migrations in the range
previous_version..=current_version, and if they are applicable to the
user's case, it will ask the user to perform them interactively.
Support for reverting migrations is also added.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
gpgme's sign and encrypt API doesn't seem to work properly; it only
encrypts for some reason. Do it manually which according to RFC 3156 -
MIME Security with OpenPGP is to sign first then encrypt the whole
thing.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
It's unnecessary and makes it difficult for an API consumer to turn a
backend back to its original type.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
When returning MailBackendCapabilities for an Nntp backend, interpret
the IMPLEMENTATION capability as server metadata.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Add optional rename_regex configuration option to allow stripping
patterns from pathnames when renaming them. This is useful when other
programs depend on specific substrings being unique like mbsync which
erroneously assumes UIDs are unique instead of UID+UIDVALIDITY+mailbox
name like the IMAP standard specifies.
Closes#463
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
GROUP was sent before ARTICLE every time even if the group was already
selected. Use Connection's `select_group` method that makes sure the
group is not re-selected needlessly.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Populating the message sequence number runtime store is not performed in
order, so inserting UIDs in a vec can fail when we want to insert a
number higher than the current maximum. This could lead to panics when
inserting to a vec at an index above its length.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Some tests needs a standalone environment because they mess with
variables that other tests need too. sealed_test runs the tests in a
forked process so that there are no issues with that.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>
Databases described by `DatabaseDescription` are created in XDG Data
directories by default. Add an optional explicit directory field so that
tests and other API consumers can override that location.
Signed-off-by: Manos Pitsidianakis <manos@pitsidianak.is>