aboutsummaryrefslogtreecommitdiff
path: root/Command
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
parentd8bc62fed9ae2e85235fde7a6cba5f522daf6014 (diff)
Special remotes configured with autoenable=true will be automatically enabled when git-annex init is run.
Diffstat (limited to 'Command')
-rw-r--r--Command/EnableRemote.hs9
-rw-r--r--Command/Init.hs2
-rw-r--r--Command/InitRemote.hs50
-rw-r--r--Command/Reinit.hs2
4 files changed, 10 insertions, 53 deletions
diff --git a/Command/EnableRemote.hs b/Command/EnableRemote.hs
index 1d4c4af5e..84216dd78 100644
--- a/Command/EnableRemote.hs
+++ b/Command/EnableRemote.hs
@@ -11,7 +11,7 @@ import Common.Annex
import Command
import qualified Logs.Remote
import qualified Types.Remote as R
-import qualified Command.InitRemote as InitRemote
+import qualified Annex.SpecialRemote
import qualified Data.Map as M
@@ -26,21 +26,20 @@ seek = withWords start
start :: [String] -> CommandStart
start [] = unknownNameError "Specify the name of the special remote to enable."
-start (name:ws) = go =<< InitRemote.findExisting name
+start (name:ws) = go =<< Annex.SpecialRemote.findExisting name
where
config = Logs.Remote.keyValToConfig ws
go Nothing = unknownNameError "Unknown special remote name."
go (Just (u, c)) = do
let fullconfig = config `M.union` c
- t <- InitRemote.findType fullconfig
-
+ t <- either error return (Annex.SpecialRemote.findType fullconfig)
showStart "enableremote" name
next $ perform t u fullconfig
unknownNameError :: String -> Annex a
unknownNameError prefix = do
- names <- InitRemote.remoteNames
+ names <- Annex.SpecialRemote.remoteNames
error $ prefix ++ "\n" ++
if null names
then "(No special remotes are currently known; perhaps use initremote instead?)"
diff --git a/Command/Init.hs b/Command/Init.hs
index 0f32f1ba1..d969669f8 100644
--- a/Command/Init.hs
+++ b/Command/Init.hs
@@ -10,6 +10,7 @@ module Command.Init where
import Common.Annex
import Command
import Annex.Init
+import qualified Annex.SpecialRemote
cmd :: Command
cmd = dontCheck repoExists $
@@ -29,4 +30,5 @@ start ws = do
perform :: String -> CommandPerform
perform description = do
initialize $ if null description then Nothing else Just description
+ Annex.SpecialRemote.autoEnable
next $ return True
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"
diff --git a/Command/Reinit.hs b/Command/Reinit.hs
index 0d144e945..1be692871 100644
--- a/Command/Reinit.hs
+++ b/Command/Reinit.hs
@@ -13,6 +13,7 @@ import Annex.Init
import Annex.UUID
import Types.UUID
import qualified Remote
+import qualified Annex.SpecialRemote
cmd :: Command
cmd = dontCheck repoExists $
@@ -38,4 +39,5 @@ perform s = do
else Remote.nameToUUID s
storeUUID u
initialize'
+ Annex.SpecialRemote.autoEnable
next $ return True