aboutsummaryrefslogtreecommitdiff
path: root/Types/Remote.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Types/Remote.hs')
-rw-r--r--Types/Remote.hs11
1 files changed, 11 insertions, 0 deletions
diff --git a/Types/Remote.hs b/Types/Remote.hs
index 272693296..798bf1af5 100644
--- a/Types/Remote.hs
+++ b/Types/Remote.hs
@@ -19,6 +19,7 @@ module Types.Remote
, Verification(..)
, unVerified
, ExportLocation(..)
+ , ExportDirectory(..)
, isExportSupported
, ExportActions(..)
)
@@ -164,6 +165,9 @@ unVerified a = do
newtype ExportLocation = ExportLocation FilePath
deriving (Show, Eq)
+newtype ExportDirectory = ExportDirectory FilePath
+ deriving (Show, Eq)
+
isExportSupported :: RemoteA a -> a Bool
isExportSupported r = exportSupported (remotetype r) (config r) (gitconfig r)
@@ -178,6 +182,13 @@ data ExportActions a = ExportActions
, retrieveExport :: Key -> ExportLocation -> FilePath -> MeterUpdate -> a Bool
-- Removes an exported file (succeeds if the contents are not present)
, removeExport :: Key -> ExportLocation -> a Bool
+ -- Removes an exported directory. Typically the directory will be
+ -- empty, but it could possbly contain files or other directories,
+ -- and it's ok to delete those. If the remote does not use
+ -- directories, or automatically cleans up empty directories,
+ -- this can be Nothing. Should not fail if the directory was
+ -- already removed.
+ , removeExportDirectory :: Maybe (ExportDirectory -> a Bool)
-- Checks if anything is exported to the remote at the specified
-- ExportLocation.
-- Throws an exception if the remote cannot be accessed.