Add init backend config to automatically initialize restic repository
#401
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new
initoption to the backend config. Settinginit: trueon a backend makes it so thatautoresticwill automatically initialize theresticrepository that powers that backend.This initialization is done in a lazy fashion. If the repository is already initialized nothing will happen.
The initialization process will happen when a backup is triggered through:
autorestic backup ...autorestic cron(the initialization happens only when the backup happens, not during each invocation of the cron handler)Note that I've updated
autorestic checkto keep its auto-init behavior but to rely on the new implementation for this PR.Checking if a repo exists is done by calling
restic cat configas documented in https://restic.readthedocs.io/en/latest/075_scripting.html#check-if-a-repository-is-already-initialized. I chose this method over the existing method of callingrestic checkbecause this method performs fewer IO operations on the repository. This matters in cases where the repo is stored on a cloud platform where these IO operations turn into API calls which end up costing money for the user.