summaryrefslogtreecommitdiff
path: root/Command
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-07-11 00:42:32 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-07-11 00:42:32 -0400
commite2f434c2a07d8aa8a27eeeb6394bebd7684285ef (patch)
treece706ea24348ab4c3c2347569b7f6cd84ab7ec49 /Command
parent45acd1f959b4c7e7381ac1f03b30f937330cfa88 (diff)
converted Forget and TestRemote
Diffstat (limited to 'Command')
-rw-r--r--Command/Forget.hs40
-rw-r--r--Command/TestRemote.hs43
2 files changed, 45 insertions, 38 deletions
diff --git a/Command/Forget.hs b/Command/Forget.hs
index 24789fe44..584b56f8a 100644
--- a/Command/Forget.hs
+++ b/Command/Forget.hs
@@ -16,28 +16,30 @@ import qualified Annex
import Data.Time.Clock.POSIX
cmd :: Command
-cmd = withOptions forgetOptions $
- command "forget" SectionMaintenance
- "prune git-annex branch history"
- paramNothing (withParams seek)
-
-forgetOptions :: [Option]
-forgetOptions = [dropDeadOption]
-
-dropDeadOption :: Option
-dropDeadOption = flagOption [] "drop-dead" "drop references to dead repositories"
-
-seek :: CmdParams -> CommandSeek
-seek ps = do
- dropdead <- getOptionFlag dropDeadOption
- withNothing (start dropdead) ps
-
-start :: Bool -> CommandStart
-start dropdead = do
+cmd = command "forget" SectionMaintenance
+ "prune git-annex branch history"
+ paramNothing (seek <$$> optParser)
+
+data ForgetOptions = ForgetOptions
+ { dropDead :: Bool
+ }
+
+optParser :: CmdParamsDesc -> Parser ForgetOptions
+optParser _ = ForgetOptions
+ <$> switch
+ ( long "drop-dead"
+ <> help "drop references to dead repositories"
+ )
+
+seek :: ForgetOptions -> CommandSeek
+seek = commandAction . start
+
+start :: ForgetOptions -> CommandStart
+start o = do
showStart "forget" "git-annex"
now <- liftIO getPOSIXTime
let basets = addTransition now ForgetGitHistory noTransitions
- let ts = if dropdead
+ let ts = if dropDead o
then addTransition now ForgetDeadRemotes basets
else basets
next $ perform ts =<< Annex.getState Annex.force
diff --git a/Command/TestRemote.hs b/Command/TestRemote.hs
index 250c6f41a..e51dcaeb3 100644
--- a/Command/TestRemote.hs
+++ b/Command/TestRemote.hs
@@ -27,6 +27,7 @@ import Messages
import Types.Messages
import Remote.Helper.Chunked
import Locations
+import Git.Types
import Test.Tasty
import Test.Tasty.Runners
@@ -37,25 +38,29 @@ import qualified Data.ByteString.Lazy as L
import qualified Data.Map as M
cmd :: Command
-cmd = withOptions [sizeOption] $
- command "testremote" SectionTesting
- "test transfers to/from a remote"
- paramRemote (withParams seek)
-
-sizeOption :: Option
-sizeOption = fieldOption [] "size" paramSize "base key size (default 1MiB)"
-
-seek :: CmdParams -> CommandSeek
-seek ps = do
- basesz <- fromInteger . fromMaybe (1024 * 1024)
- <$> getOptionField sizeOption (pure . getsize)
- withWords (start basesz) ps
- where
- getsize v = v >>= readSize dataUnits
-
-start :: Int -> [String] -> CommandStart
-start basesz ws = do
- let name = unwords ws
+cmd = command "testremote" SectionTesting
+ "test transfers to/from a remote"
+ paramRemote (seek <$$> optParser)
+
+data TestRemoteOptions = TestRemoteOptions
+ { testRemote :: RemoteName
+ , sizeOption :: ByteSize
+ }
+
+optParser :: CmdParamsDesc -> Parser TestRemoteOptions
+optParser desc = TestRemoteOptions
+ <$> argument str ( metavar desc )
+ <*> option (str >>= maybe (fail "parse error") return . readSize dataUnits)
+ ( long "size" <> metavar paramSize
+ <> value (1024 * 1024)
+ <> help "base key size (default 1MiB)"
+ )
+
+seek :: TestRemoteOptions -> CommandSeek
+seek o = commandAction $ start (fromInteger $ sizeOption o) (testRemote o)
+
+start :: Int -> RemoteName -> CommandStart
+start basesz name = do
showStart "testremote" name
r <- either error id <$> Remote.byName' name
showSideAction "generating test keys"