diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-12-16 15:36:59 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-12-16 15:37:50 -0400 |
commit | 353b59a000dd0e4941b3c36a7fd02d23f3cf44a1 (patch) | |
tree | 3d39f2107a921d9cf3bc6bb6c922a58046c460a8 /Command/P2P.hs | |
parent | 6c59cea78aa11aea9031eb162b4158fa1d955f4f (diff) |
p2p: --link no longer takes a remote name, instead the --name option can be used.
Diffstat (limited to 'Command/P2P.hs')
-rw-r--r-- | Command/P2P.hs | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/Command/P2P.hs b/Command/P2P.hs index ea4dd7c65..d59d774c4 100644 --- a/Command/P2P.hs +++ b/Command/P2P.hs @@ -27,25 +27,43 @@ cmd = command "p2p" SectionSetup data P2POpts = GenAddresses - | LinkRemote RemoteName + | LinkRemote -optParser :: CmdParamsDesc -> Parser P2POpts -optParser _ = genaddresses <|> linkremote +optParser :: CmdParamsDesc -> Parser (P2POpts, Maybe RemoteName) +optParser _ = (,) + <$> (genaddresses <|> linkremote) + <*> optional name where genaddresses = flag' GenAddresses ( long "gen-addresses" <> help "generate addresses that allow accessing this repository over P2P networks" ) - linkremote = LinkRemote <$> strOption + linkremote = flag' LinkRemote ( long "link" - <> metavar paramRemote - <> help "specify name to use for git remote" + <> help "set up a P2P link to a git remote" + ) + name = strOption + ( long "name" + <> metavar paramName + <> help "name of remote" ) -seek :: P2POpts -> CommandSeek -seek GenAddresses = genAddresses =<< loadP2PAddresses -seek (LinkRemote name) = commandAction $ +seek :: (P2POpts, Maybe RemoteName) -> CommandSeek +seek (GenAddresses, _) = genAddresses =<< loadP2PAddresses +seek (LinkRemote, Just name) = commandAction $ linkRemote (Git.Remote.makeLegalName name) +seek (LinkRemote, Nothing) = commandAction $ + linkRemote =<< unusedPeerRemoteName + +unusedPeerRemoteName :: Annex RemoteName +unusedPeerRemoteName = go (1 :: Integer) =<< usednames + where + usednames = mapMaybe remoteName . remotes <$> Annex.gitRepo + go n names = do + let name = "peer" ++ show n + if name `elem` names + then go (n+1) names + else return name -- Only addresses are output to stdout, to allow scripting. genAddresses :: [P2PAddress] -> Annex () |