support parsing options like --to=here

Reworked remote name parsing to allow things like that. Command.Move
uses it for --to=here, although there's not yet an implementation of
that option.

This commit was sponsored by Ignacio on Patreon.
This commit is contained in:
Joey Hess 2017-05-31 16:20:55 -04:00
parent df880fe815
commit 5ee6912cf3
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
6 changed files with 32 additions and 22 deletions

View file

@ -1,6 +1,6 @@
{- git-annex command-line option parsing
-
- Copyright 2010-2015 Joey Hess <id@joeyh.name>
- Copyright 2010-2017 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
@ -105,10 +105,10 @@ parseAutoOption = switch
<> help "automatic mode"
)
parseRemoteOption :: Parser RemoteName -> Parser (DeferredParse Remote)
parseRemoteOption p = DeferredParse
parseRemoteOption :: RemoteName -> DeferredParse Remote
parseRemoteOption = DeferredParse
. (fromJust <$$> Remote.byNameWithUUID)
. Just <$> p
. Just
data FromToOptions
= FromRemote (DeferredParse Remote)
@ -120,18 +120,18 @@ instance DeferredParseClass FromToOptions where
parseFromToOptions :: Parser FromToOptions
parseFromToOptions =
(FromRemote <$> parseFromOption)
<|> (ToRemote <$> parseToOption)
(FromRemote . parseRemoteOption <$> parseFromOption)
<|> (ToRemote . parseRemoteOption <$> parseToOption)
parseFromOption :: Parser (DeferredParse Remote)
parseFromOption = parseRemoteOption $ strOption
parseFromOption :: Parser RemoteName
parseFromOption = strOption
( long "from" <> short 'f' <> metavar paramRemote
<> help "source remote"
<> completeRemotes
)
parseToOption :: Parser (DeferredParse Remote)
parseToOption = parseRemoteOption $ strOption
parseToOption :: Parser RemoteName
parseToOption = strOption
( long "to" <> short 't' <> metavar paramRemote
<> help "destination remote"
<> completeRemotes