registerurl, unregisterurl: Added --remote option

This serves two purposes. --remote=web bypasses other special remotes that
claim the url, same as addurl --raw. And, specifying some other remote
allows making sure that an url is claimed by the remote you expect,
which makes then using setpresentkey not be fragile.

Sponsored-By: the NIH-funded NICEMAN (ReproNim TR&D3) project
This commit is contained in:
Joey Hess 2023-04-05 15:46:51 -04:00
parent c39d72ac78
commit 2b940f7725
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
14 changed files with 76 additions and 27 deletions

View file

@ -119,8 +119,8 @@ parseAutoOption = switch
<> help "automatic mode"
)
parseRemoteOption :: RemoteName -> DeferredParse Remote
parseRemoteOption = DeferredParse
mkParseRemoteOption :: RemoteName -> DeferredParse Remote
mkParseRemoteOption = DeferredParse
. (fromJust <$$> Remote.byNameWithUUID)
. Just
@ -145,8 +145,8 @@ instance DeferredParseClass FromToOptions where
parseFromToOptions :: Parser FromToOptions
parseFromToOptions =
(FromRemote . parseRemoteOption <$> parseFromOption)
<|> (ToRemote . parseRemoteOption <$> parseToOption)
(FromRemote . mkParseRemoteOption <$> parseFromOption)
<|> (ToRemote . mkParseRemoteOption <$> parseToOption)
parseFromOption :: Parser RemoteName
parseFromOption = strOption
@ -162,6 +162,12 @@ parseToOption = strOption
<> completeRemotes
)
parseRemoteOption :: Parser RemoteName
parseRemoteOption = strOption
( long "remote" <> metavar paramRemote
<> completeRemotes
)
-- | From or to a remote, or both, or a special --to=here
data FromToHereOptions
= FromOrToRemote FromToOptions
@ -174,14 +180,14 @@ parseFromToHereOptions = go
<*> optional parseToOption
where
go (Just from) (Just to) = Just $ FromRemoteToRemote
(parseRemoteOption from)
(parseRemoteOption to)
(mkParseRemoteOption from)
(mkParseRemoteOption to)
go (Just from) Nothing = Just $ FromOrToRemote
(FromRemote $ parseRemoteOption from)
(FromRemote $ mkParseRemoteOption from)
go Nothing (Just to) = Just $ case to of
"here" -> ToHere
"." -> ToHere
_ -> FromOrToRemote $ ToRemote $ parseRemoteOption to
_ -> FromOrToRemote $ ToRemote $ mkParseRemoteOption to
go Nothing Nothing = Nothing
instance DeferredParseClass FromToHereOptions where