summaryrefslogtreecommitdiffhomepage
path: root/Storage
diff options
context:
space:
mode:
authorJoey Hess <joeyh@joeyh.name>2016-10-06 14:38:59 -0400
committerJoey Hess <joeyh@joeyh.name>2016-10-06 14:49:24 -0400
commit61ab8bd1f576e633a2eea4b63033c368a6645602 (patch)
tree1eacccce62019f89360a605d2c0cac72993bfa65 /Storage
parentb40d441c52f37584653e74fada9906cc8105c9f7 (diff)
downloadkeysafe-61ab8bd1f576e633a2eea4b63033c368a6645602.tar.gz
New --add-storage-directory and --add-server options
* New --add-storage-directory and --add-server options, which can be used to make keysafe backup/restore using additional locations. * Removed --store-local option; use --add-storage-directory instead. This commit was sponsored by Thomas Hochstein on Patreon.
Diffstat (limited to 'Storage')
-rw-r--r--Storage/Local.hs4
-rw-r--r--Storage/Network.hs8
2 files changed, 12 insertions, 0 deletions
diff --git a/Storage/Local.hs b/Storage/Local.hs
index 6dcaaae..a79cc43 100644
--- a/Storage/Local.hs
+++ b/Storage/Local.hs
@@ -5,6 +5,7 @@
module Storage.Local
( localStorage
+ , localStorageOverride
, storageDir
, storageTopDir
, testStorageDir
@@ -49,6 +50,9 @@ localStorage storagelevel getsharedir n = Storage
where
section = Section n
+localStorageOverride :: FilePath -> Storage
+localStorageOverride d = localStorage LocallyPreferred (\_ -> pure d) ""
+
store :: Section -> GetShareDir -> StorableObjectIdent -> Share -> IO StoreResult
store section getsharedir i s = onError (StoreFailure . show) $ do
dir <- getsharedir section
diff --git a/Storage/Network.hs b/Storage/Network.hs
index e2004cc..9d54a1c 100644
--- a/Storage/Network.hs
+++ b/Storage/Network.hs
@@ -7,6 +7,7 @@
module Storage.Network (
networkStorage,
+ networkStorageOverride,
) where
import Types
@@ -32,6 +33,13 @@ networkStorage storagelevel localdir server = Storage
where
ServerName name = serverName server
+networkStorageOverride :: Maybe LocalStorageDirectory -> HostName -> Port -> Storage
+networkStorageOverride lsd h p = networkStorage LocallyPreferred lsd $ Server
+ { serverName = ServerName h
+ , serverAddress = [ServerAddress h p]
+ , serverDesc = h
+ }
+
store :: Server -> StorableObjectIdent -> Share -> IO StoreResult
store srv i (Share _n o) =
serverRequest srv StoreFailure id i $ \pow ->