Added updateproxy command and remote.name.annex-proxy configuration

So far this only records proxy information on the git-annex branch.
This commit is contained in:
Joey Hess 2024-06-04 14:50:38 -04:00
parent f3f40e03b4
commit f97f4b8bdb
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
10 changed files with 207 additions and 1 deletions

52
Command/UpdateProxy.hs Normal file
View file

@ -0,0 +1,52 @@
{- git-annex command
-
- Copyright 2024 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU AGPL version 3 or higher.
-}
module Command.UpdateProxy where
import Command
import Logs.Proxy
import Annex.UUID
import qualified Remote as R
import qualified Types.Remote as R
import Utility.SafeOutput
import qualified Data.Map as M
import qualified Data.Set as S
cmd :: Command
cmd = noMessages $ command "updateproxy" SectionSetup
"update records with proxy configuration"
paramNothing (withParams seek)
seek :: CmdParams -> CommandSeek
seek = withNothing (commandAction start)
start :: CommandStart
start = startingCustomOutput (ActionItemOther Nothing) $ do
rs <- R.remoteList
let proxies = S.fromList $
map (\r -> Proxy (R.uuid r) (R.name r)) $
filter (remoteAnnexProxy . R.gitconfig) rs
u <- getUUID
oldproxies <- fromMaybe mempty . M.lookup u <$> getProxies
if oldproxies == proxies
then liftIO $ putStrLn "No proxy changes to record."
else do
describechanges oldproxies proxies
recordProxies proxies
next $ return True
where
describechanges oldproxies proxies =
forM_ (S.toList $ S.union oldproxies proxies) $ \p ->
case (S.member p oldproxies, S.member p proxies) of
(False, True) -> liftIO $
putStrLn $ safeOutput $
"Started proxying for " ++ proxyRemoteName p
(True, False) -> liftIO $
putStrLn $ safeOutput $
"Stopped proxying for " ++ proxyRemoteName p
_ -> noop