import+export from directory special remote fully working
Had to add two more API calls to override export APIs that are not safe for use in combination with import. It's unfortunate that removeExportDirectory is documented to be allowed to remove non-empty directories. I'm not entirely sure why it's that way, my best guess is it was intended to make it easy to implement with just rm -rf.
This commit is contained in:
parent
554b7b7f3e
commit
8c54604e67
6 changed files with 129 additions and 77 deletions
|
@ -272,7 +272,7 @@ data ImportActions a = ImportActions
|
|||
-- Exports content to an ExportLocation, and returns the
|
||||
-- ContentIdentifier corresponding to the content it stored.
|
||||
--
|
||||
-- This has to be used rather than storeExport when a special remote
|
||||
-- This is used rather than storeExport when a special remote
|
||||
-- supports imports, since files on such a special remote can be
|
||||
-- changed at any time.
|
||||
--
|
||||
|
@ -293,4 +293,23 @@ data ImportActions a = ImportActions
|
|||
-- ^ old content that it's safe to overwrite
|
||||
-> MeterUpdate
|
||||
-> a (Maybe ContentIdentifier)
|
||||
-- This is used rather than removeExport when a special remote
|
||||
-- supports imports.
|
||||
--
|
||||
-- It should only remove a file from the remote when it has one
|
||||
-- of the ContentIdentifiers passed to it, unless listContents
|
||||
-- can recover an overwritten file.
|
||||
--
|
||||
-- It needs to handle races similar to storeExportWithContentIdentifier.
|
||||
, removeExportWithContentIdentifier
|
||||
:: Key
|
||||
-> ExportLocation
|
||||
-> [ContentIdentifier]
|
||||
-> a Bool
|
||||
-- Removes a directory from the export, but only when it's empty.
|
||||
-- Used instead of removeExportDirectory when a special remote
|
||||
-- supports imports.
|
||||
--
|
||||
-- If the directory is not empty, it should succeed.
|
||||
, removeExportDirectoryWhenEmpty :: Maybe (ExportDirectory -> a Bool)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue