summaryrefslogtreecommitdiff
path: root/Command/InitRemote.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-09-14 14:49:48 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-09-14 14:49:48 -0400
commit772f686a33e17ce104d0a9e5cc28a70e28250eb2 (patch)
tree067ebe52d8b461ca27e56d5944ae1d391972006b /Command/InitRemote.hs
parentd8bc62fed9ae2e85235fde7a6cba5f522daf6014 (diff)
Special remotes configured with autoenable=true will be automatically enabled when git-annex init is run.
Diffstat (limited to 'Command/InitRemote.hs')
-rw-r--r--Command/InitRemote.hs50
1 files changed, 2 insertions, 48 deletions
diff --git a/Command/InitRemote.hs b/Command/InitRemote.hs
index a3a946944..60b5220e5 100644
--- a/Command/InitRemote.hs
+++ b/Command/InitRemote.hs
@@ -10,14 +10,12 @@ module Command.InitRemote where
import qualified Data.Map as M
import Common.Annex
+import Annex.SpecialRemote
import Command
import qualified Remote
import qualified Logs.Remote
import qualified Types.Remote as R
import Logs.UUID
-import Logs.Trust
-
-import Data.Ord
cmd :: Command
cmd = command "initremote" SectionSetup
@@ -38,7 +36,7 @@ start (name:ws) = ifM (isJust <$> findExisting name)
( error $ "There is already a remote named \"" ++ name ++ "\""
, do
let c = newConfig name
- t <- findType config
+ t <- either error return (findType config)
showStart "initremote" name
next $ perform t name $ M.union config c
@@ -57,47 +55,3 @@ cleanup u name c = do
describeUUID u name
Logs.Remote.configSet u c
return True
-
-{- See if there's an existing special remote with this name. -}
-findExisting :: String -> Annex (Maybe (UUID, R.RemoteConfig))
-findExisting name = do
- t <- trustMap
- matches <- sortBy (comparing $ \(u, _c) -> M.lookup u t )
- . findByName name
- <$> Logs.Remote.readRemoteLog
- return $ headMaybe matches
-
-newConfig :: String -> R.RemoteConfig
-newConfig = M.singleton nameKey
-
-findByName :: String -> M.Map UUID R.RemoteConfig -> [(UUID, R.RemoteConfig)]
-findByName n = filter (matching . snd) . M.toList
- where
- matching c = case M.lookup nameKey c of
- Nothing -> False
- Just n'
- | n' == n -> True
- | otherwise -> False
-
-remoteNames :: Annex [String]
-remoteNames = do
- m <- Logs.Remote.readRemoteLog
- return $ mapMaybe (M.lookup nameKey . snd) $ M.toList m
-
-{- find the specified remote type -}
-findType :: R.RemoteConfig -> Annex RemoteType
-findType config = maybe unspecified specified $ M.lookup typeKey config
- where
- unspecified = error "Specify the type of remote with type="
- specified s = case filter (findtype s) Remote.remoteTypes of
- [] -> error $ "Unknown remote type " ++ s
- (t:_) -> return t
- findtype s i = R.typename i == s
-
-{- The name of a configured remote is stored in its config using this key. -}
-nameKey :: String
-nameKey = "name"
-
-{- The type of a remote is stored in its config using this key. -}
-typeKey :: String
-typeKey = "type"